generate-id()-Funktion | |
Diese Funktion generiert eine eindeutige ID (mit gültigem XML-Namen) für einen bestimmten Knoten. Wird keine Knotenmenge angegeben, erzeugt die Funktion generate-id() eine ID für den Kontextknoten. | |
Eingaben | |
Eine optionale Knotenmenge. Wird keine Knotenmenge angegeben, erzeugt diese Funktion eine ID für den Kontextknoten. Ist die Knotenmenge leer, gibt generate-id() einen leeren String zurück. |
|
Ausgabe | |
Eine eindeutige ID oder ein leerer String, wenn eine leere Knotenmenge angegeben wird. Es ist wichtig, einiges über die Funktion generate-id() zu wissen:
|
|
Definition | |
XSLT-Abschnitt 12.4, Diverse zusätzliche Funktionen |
|
Beispiel | |
Es folgt ein einfaches Stylesheet, das die Funktion document('') verwendet, um auf alle seine eigenen <xsl:text>-Knoten zuzugreifen. Anschließend wird mit Hilfe der Funktion generate-id() eine eindeutige ID für jeden dieser Knoten generiert. Anschließend wird die Funktion generate-id() erneut aufgerufen, um zu zeigen, dass die Funktion für einen bestimmten Knoten immer dieselbe ID erzeugt. Hier das Stylesheet: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:variable name="newline"> <xsl:text> </xsl:text> </xsl:variable> <xsl:template match="/"> <xsl:value-of select="$newline"/> <xsl:text>A test of the generate-id() function:</xsl:text> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> <xsl:for-each select="document('')//xsl:text"> <xsl:text>Node name: </xsl:text> <xsl:value-of select="name()"/> <xsl:text> - generated id: </xsl:text> <xsl:value-of select="generate-id()"/> <xsl:value-of select="$newline"/> </xsl:for-each> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> <xsl:text>Now we'll try it again...</xsl:text> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> <xsl:for-each select="document('')//xsl:text"> <xsl:text>Node name: </xsl:text> <xsl:value-of select="name()"/> <xsl:text> - generated id: </xsl:text> <xsl:value-of select="generate-id()"/> <xsl:value-of select="$newline"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> Das Stylesheet erzeugt die folgenden Ergebnisse: A test of the generate-id() function: Node name: xsl:text - generated id: NC Node name: xsl:text - generated id: N16 Node name: xsl:text - generated id: N22 Node name: xsl:text - generated id: N28 Node name: xsl:text - generated id: N38 Node name: xsl:text - generated id: N44 Node name: xsl:text - generated id: N4A Now we'll try it again... Node name: xsl:text - generated id: NC Node name: xsl:text - generated id: N16 Node name: xsl:text - generated id: N22 Node name: xsl:text - generated id: N28 Node name: xsl:text - generated id: N38 Node name: xsl:text - generated id: N44 Node name: xsl:text - generated id: N4A Die jeweils erzeugten IDs sind dieselben. |