Previous | Next | Indexes
Zvon > Tutorials > XSLT 2.0 Tutorial > Implicit behaviour (2/10) >

xsl:apply-templates without select attribute and position()

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