| generate-id() Function | |
| Generates a unique ID (an XML name) for a given node. If no node-set is given, generate-id() generates an ID for the context node. | |
| Inputs | |
|
An optional node-set. If no node-set is given, this function generates an ID for the context node. If the node-set is empty, generate-id() returns an empty string. |
|
| Output | |
|
A unique ID, or an empty string if an empty node-set is given. Several things about the generate-id() function are important to know:
|
|
| Defined in | |
|
XSLT section 12.4, Miscellaneous Additional Functions. |
|
| Example | |
|
Here's a simple stylesheet that uses the document('') function to access all of its own <xsl:text> nodes. It then uses generate-id() to generate a unique ID for each of those nodes, then calls generate-id() again to illustrate that the function generates the same ID for a given node. Here's the 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>
Our stylesheet generates these results: 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 The IDs generated each time are the same. |
|