The xxx element uses xsl:apply-templates without select attribute while the yyy example selects all children element. Please note the difference in values returned by position() function. In the first case select equal "node()" is implicitly assumed and so text nodes are also counted (in this case all text nodes consist of whitespaces and so they presence is demonstrated only by different numbering according to position() in comparison with the yyy when only children elements are explicitly selected.
|
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/aaa"> <xxx> <xsl:apply-templates/> </xxx> <yyy> <xsl:apply-templates select="*"/> </yyy> </xsl:template> <xsl:template match="*"> <element> <xsl:value-of select="position()"/> <xsl:text>: </xsl:text> <xsl:value-of select="name()"/> </element> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa> <bbb/> <ccc/> </aaa> |
Output
<xxx> <element>2: bbb</element> <element>4: ccc</element> </xxx> <yyy> <element>1: bbb</element> <element>2: ccc</element> </yyy> |
| Previous chapter: | Context |
| Next chapter: | Arithmetics |
| Previous page: | xsl:apply-templates without select attribute |
| Next page: | Implicit templates |