Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt die Position oder die Indexnummer des Knotens relativ zu allen ausgewählten Knoten in der Knotenliste zurück.
number position()
Hinweise
Die Position des Knotens ist 1-basiert. Damit gibt der erste Knoten die Position 1 zurück.
Beispiel
In diesem Beispiel werden die Auswirkungen der Verwendung der position()-Funktion veranschaulicht.
XML-Datei (position.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="position.xsl"?>
<test>
<x a="a11">
<x a="a21">
<x a="a31">
<y b="b31">y31</y>
<y b="b32">y32</y>
</x>
</x>
</x>
<x a="a12">
<x a="a22">
<y b="b21">y21</y>
<y b="b22">y22</y>
</x>
</x>
<x a="a13">
<y b="b11">y11</y>
<y b="b12">y12</y>
</x>
<x a="a14">
<y b="b01">y01</y>
<y b="b02">y02</y>
</x>
</test>
XSLT-Datei (position.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"/>
<xsl:template match="/">
<xsl:apply-templates select="//x"/>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="@*"/>
<xsl:value-of select="position()"/>
</xsl:element>\n
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
Ausgabe
Das oben genannte XSLT-Stylesheet ordnet bei Anwendung auf die XML-Quelldatei alle <x>-Elemente neuen <x>-Elementen zu, deren Inhalt ihre Position im Dokument angibt.
<x a="a11">1</x>
<x a="a21">2</x>
<x a="a31">3</x>
<x a="a12">4</x>
<x a="a22">5</x>
<x a="a13">6</x>
<x a="a14">7</x>
Zur Veranschaulichung der Abhängigkeit der position()-Funktion von dem Kontext, in dem sie ausgeführt wird, wird die folgende Vorlagenregel (aus der oben genannten XSLT-Datei) ersetzt:
<xsl:template match="/">
<xsl:apply-templates select="//x"/>
</xsl:template>
Die Vorlagenregel wird durch die folgende Regel ersetzt:
<xsl:template match="/">
<xsl:apply-templates select="//x[1]"/>
</xsl:template>
Daraus ergibt sich folgendes Ergebnis:
<x a="a11">1</x>
<x a="a21">2</x>
<x a="a31">3</x>
<x a="a22">4</x>
Die Vorlagenregel kann jedoch auch durch die folgende Regel ersetzt werden:
<xsl:template match="/">
<xsl:apply-templates select="//x[2]"/>
</xsl:template>
Dann lautet das Ergebnis wie folgt:
<x a="a12">1</x>