Previous | Next | Indexes
Zvon > Tutorials > XSLT 2.0 Tutorial > Keys (5/12) >

Key element contents instead of use attribute

In XSLT 1.0 only way how to specify values of the key was via use attribute. In XSLT 2.0 the use attribute can be replaced by the content of the xsl:key element.

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:key  name="kkk"
                        match="bbb">
                  <xsl:value-of  select="@x"/>
            </xsl:key>

            <xsl:template  match="/aaa">
                  <xsl:apply-templates  select="ccc/ddd"/>
            </xsl:template>

            <xsl:template  match="ddd">
                  <uuu>
                        <xsl:apply-templates  select="key('kkk',@y)"/>
                  </uuu>
            </xsl:template>

      </xsl:stylesheet>
XML

      <aaa>
            <bbb  x="a">X</bbb>
            <bbb  x="b">Y</bbb>
            <bbb  x="c">Z</bbb>
            <ccc>
                  <ddd  y="b"/>
                  <ddd  y="c"/>
                  <ddd  y="a"/>
            </ccc>
      </aaa>
Output

      <uuu>Y</uuu>
      <uuu>Z</uuu>
      <uuu>X</uuu>


Previous chapter: Namespaces
Next chapter: Recursions
Previous page: key as the first step of an XPath expression
Next page: Several keys elements of the same name