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