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

Several keys elements of the same name

Several xsl:key elements can define one key. The sequence created with key() function is a union of all matches by these individual declarations.

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"
                        use="@x"/>
            <xsl:key  name="kkk"
                        match="bbb"
                        use="@y"/>
            <xsl:key  name="kkk"
                        match="vvv"
                        use="@z"/>

            <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  y="b">Y</bbb>
            <vvv  z="c">Z</vvv>
            <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 element contents instead of use attribute
Next page: The same node matched by several keys