xsl-list
[Top] [All Lists]

RE: Getting a distinct list of node names

2003-12-15 13:04:50
-----Original Message-----
From: Manuel Holtgrewe

I need to get a distinct list of the node names from all children of one
node. For example, if I have:

    <node:definition>
        <form:validator />
        <form:validator />
        <form:filter />
    </node:definition>


tricky one...

I tried it like:

<xsl:template match="node:definition">

  <xsl:for-each select="*[name(.) != preceding::*]">
    <xsl:if test="position() = 1">
      <xsl:text>('</xsl:text>
    </xsl:if>
    <xsl:value-of select="name()" />
    <xsl:text>'</xsl:text>
    <xsl:choose>
      <xsl:when test="position() != last()">
        <xsl:text>, </xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text>)</xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:for-each>

</xsl:template>

Provided you include the namespace declaration for the node:* namespace in
your XSL, there shouldn't be any problems... Could get expensive with long
lists maybe.


Cheers,

Andreas


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list