FUNCTION:  generate-id

string = generate-id(node-set)
 
The generate-id function is used to generate a string value that identifies a node. The string will begin with an alphabetic character followed by several additional alphanumeric characters. Within the application of a stylesheet, each returned string value will be unique.
 
Unfortunately, the generated id has no relationship to any id attribute in the source document. (Therefore, you cannot use the id or key functions to find or set this value.)
 
The primary purpose of this function is to provide a mechanism to create links in the output document that use the id. For example, if this function returned the string h144d7 for a specified node, then the link to that node would be: <a href="#h144d7">
 
node-set
 
The optional node-set argument defines the target node-set. If the node-set contains more than one node, then only the first node in the set will be considered. If the node-set is empty, the empty string will be returned. If this argument is omitted, then as a default, an id will be generated for the context node.
 
We use the DevGuru Staff List XML file for our example with the following header:
<?xml-stylesheet type="text/xsl" href="xslt_example_generateid.xsl"?>
and we name it: xslt_example_generateid.xml
 
We use generate-id twice in this example. We first create an index of links based upon the name, and then we create the name anchors.
 
Code for xslt_example_generateid.xsl:
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>

<xsl:for-each select="devguru_staff/programmer">
NAME: <a href="#{generate-id(name)}"><xsl:value-of select="name" /></a>
<hr />
</xsl:for-each>

<xsl:for-each select="devguru_staff/programmer">
NAME: <a name="{generate-id(name)}"><xsl:value-of select="name" /></a>
<p />
DOB: <xsl:value-of select="dob" />
<p />
AGE: <xsl:value-of select="age" />
<p />
ADDRESS: <xsl:value-of select="address" />
<p />
PHONE: <xsl:value-of select="phone" />
<hr />
</xsl:for-each>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

 
Output:
 
Click to view output in separate window - requires Internet Explorer Then click on links.

 
Copyright 1999-2001 by Infinite Software Solutions, Inc. All rights reserved.
Trademark Information