| 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. |
|