This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

//* and position()


Someone explain this to me:

<xsl:template match="/">

	<xsl:variable name="all_elements" select="//*"/>
	<xsl:variable name="first_3_elements" select="//*[position() &lt; 3]"/>

	<xsl:text>&#xA;</xsl:text>
	<xsl:comment> selecting as $first_3_elements </xsl:comment>
	<xsl:for-each select="$first_3_elements">
		<xsl:value-of select="concat('&#xA;node ',position(),'=',name(),': ',normalize-space(text()))"/>
	</xsl:for-each>

	<xsl:text>&#xA;</xsl:text>
	<xsl:comment> selecting as $all_elements[position() &lt; 3] </xsl:comment>
	<xsl:for-each select="$all_elements[position() &lt; 3]">
		<xsl:value-of select="concat('&#xA;node ',position(),'=',name(),': ',normalize-space(text()))"/>
	</xsl:for-each>

	<xsl:text>&#xA;</xsl:text>
	<xsl:comment> selecting directly as //*[position() &lt; 3] </xsl:comment>
	<xsl:for-each select="//*[position() &lt; 3]">
		<xsl:value-of select="concat('&#xA;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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]