This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
//* and position()
- To: xsl-list at mulberrytech dot com
- Subject: //* and position()
- From: Mike Brown <mike at skew dot org>
- Date: Wed, 6 Sep 2000 20:35:31 -0600 (MDT)
- Reply-To: xsl-list at mulberrytech dot com
Someone explain this to me:
<xsl:template match="/">
<xsl:variable name="all_elements" select="//*"/>
<xsl:variable name="first_3_elements" select="//*[position() < 3]"/>
<xsl:text>
</xsl:text>
<xsl:comment> selecting as $first_3_elements </xsl:comment>
<xsl:for-each select="$first_3_elements">
<xsl:value-of select="concat('
node ',position(),'=',name(),': ',normalize-space(text()))"/>
</xsl:for-each>
<xsl:text>
</xsl:text>
<xsl:comment> selecting as $all_elements[position() < 3] </xsl:comment>
<xsl:for-each select="$all_elements[position() < 3]">
<xsl:value-of select="concat('
node ',position(),'=',name(),': ',normalize-space(text()))"/>
</xsl:for-each>
<xsl:text>
</xsl:text>
<xsl:comment> selecting directly as //*[position() < 3] </xsl:comment>
<xsl:for-each select="//*[position() < 3]">
<xsl:value-of select="concat('
node ',position(),'=',name(),': ',normalize-space(text()))"/>
</xsl:for-each>
</xsl:template>
The first and 3rd methods return all elements, regardless of position.
The second method returns only the first 2 elements.
Same results in XT and SAXON.
- Mike
____________________________________________________________________
Mike J. Brown, software engineer at My XML/XSL resources:
webb.net in Denver, Colorado, USA http://www.skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list