<xsl:key> |
Diese Anweisung definiert einen Index zu dem aktuellen Dokument. Das Element wird durch drei Attribute definiert: ein name, der den Index benennt; der XPath-Ausdruck match, der die zu indizierenden Knoten beschreibt, und der XPath-Ausdruck use, der die zum Erstellen des Index verwendete Eigenschaft definiert.
Kategorie
Element der obersten Ebene
Obligatorische Attribute
name Dieses Attribut definiert einen Namen für diesen Schlüssel. match Dieses Attribut repräsentiert einen XPath-Ausdruck, der die Knoten definiert, die von diesem Schlüssel indiziert werden sollen. use Dieses Attribut repräsentiert einen XPath-Ausdruck, der die Eigenschaft des indizierten Knoten definiert, die zum Abrufen der Knoten aus dem Index verwendet wird.
Optionale Attribute
Keine
Inhalt
Keiner. <xsl:key> ist ein leeres Element.
Übergeordnetes Element
<xsl:key> ist ein Element der obersten Ebene und kann nur dem Element <xsl:stylesheet> untergeordnet werden.
Definition
XSLT-Abschnitt 12.2, Schlüssel
Beispiel
Hier ein Stylesheet, das zwei <xsl:key>-Relationion zu einem XML-Dokument definiert:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
    <xsl:strip-space elements="*"/>

      <xsl:key name="language-index" match="defn" use="@language"/>
      <xsl:key name="term-ids"       match="term" use="@id"/>

      <xsl:param name="targetLanguage"/>

      <xsl:template match="/">
        <xsl:apply-templates select="glossary"/>
      </xsl:template>

      <xsl:template match="glossary">
        <html>
          <head>
            <title>
              <xsl:text>Glossary Listing: </xsl:text>
              <xsl:value-of select="key('language-index',
            $targetLanguage)[1]/preceding-sibling::term"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="key('language-index',
            $targetLanguage)[last()]/preceding-sibling::term"/>
            </title>
          </head>
          <body>
            <h1>
              <xsl:text>Glossary Listing: </xsl:text>
              <xsl:value-of select="key('language-index',
            $targetLanguage)[1]/ancestor::glentry/term"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="key('language-index',
            $targetLanguage)[last()]/ancestor::glentry/term"/>
            </h1>
            <xsl:for-each select="key('language-index', $targetLanguage)">
              <xsl:apply-templates select="ancestor::glentry"/>
            </xsl:for-each>
          </body>
        </html>
      </xsl:template>

      ...

    </xsl:stylesheet>