Freigeben über


id-Funktion

Wählt Elemente nach ihrer eindeutigen ID aus.

node-set id(object)

Hinweise

Wenn es sich um ein Argument vom Typ node-set handelt, ist das Ergebnis die Union des Ergebnisses der Anwendung von id() auf den Zeichenfolgenwert der einzelnen Knoten im node-set-Argument.

Wenn es sich um ein Argument eines anderen Typs handelt, wird es in eine Zeichenfolge konvertiert und anschließend in eine durch Leerraum getrennte Liste von Tokens (ein Leerraum ist eine beliebige Folge von Zeichen, die der Definition entsprechen) aufgeteilt. Das Ergebnis ist eine Knotengruppe, die die Elemente im gleichen Dokument wie der Kontextknoten enthält, der eine eindeutige ID aufweist, die einem der Tokens in der Liste entsprechen.

Beispiel

XML-Datei (test.xml)

<?xml version="1.0"?>
<!DOCTYPE test [
  <!ELEMENT test (x+)>
  <!ELEMENT x (x+| y+)>
  <!ATTLIST x
     a ID #REQUIRED>
  <!ELEMENT y ANY>
]>
<test>
    <x a="a11">
      <x a="a21">
        <x a="a31">
          <y>y31</y>
          <y>y32</y>
        </x>
      </x>
    </x>
    <x a="a12">
      <x a="a22">
        <y>y21</y>
        <y>y22</y>
      </x>
    </x>
    <x a="a13">
      <y>y11</y>
      <y>y12</y>
    </x>
    <x a="a14">
      <y>y03</y>
      <y>y04</y>
    </x>
</test>

XSLT-Datei (test.xsl)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" omit-xml-declaration="yes"/>

  <!-- suppress text nodes not covered in subsequent        template rule -->
  <xsl:template match="text()"/>

  <xsl:template match="*">
    <xsl:element name="{name()}">
      <xsl:apply-templates select="*|@*"/>
      <xsl:if test="text()">
         <xsl:value-of select="."/>
      </xsl:if>
    </xsl:element>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:attribute name="{name()}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:template>

  <xsl:template match="/test">
    <xsl:apply-templates select="id('a21') "/>
and 
    <xsl:apply-templates select="id('a11')//y[1]"/>
  </xsl:template>

</xsl:stylesheet>

Ausgabe

Das XSLT-Stylesheet liefert nach Anwendung auf die o.g. XML-Datei den folgenden Knotensatz:

<x a="a21">

<x a="a31">

<y>y31</y>

<y>y32</y>

</x>

</x>

and

<y>y31</y>

Siehe auch

Verweis

Referenz zu XML-Datentypen