[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How to use generate-id() inside an xsl:function w

Subject: Re: How to use generate-id() inside an xsl:function without a node available?
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Tue, 27 Feb 2007 21:46:18 +0100
Re:  How to use generate-id() inside an xsl:function  w
Florent Georges wrote:
The point is that generate-id() is not a random string
generator.  It generates an ID based on a node, always the
same ID for the same node.  If you call it without argument,
the context item is used (which is indeed not possible in a
function definition).

Found it!
You nevertheless brought something up: why not simply *create* the node each time again?. Here's a simple enough (but process intensive) solution:


<xsl:for-each select="(1 to 20)" >
  <xsl:variable name="id-node"><some-node /></xsl:variable>
  <some-elem id="{generate-id($id-node)}" />
</xsl:for-each>

this generates unique ids, even on recursive calling of the function (if the for-each is wrapped inside a function). Not sure this is "REC behavior", but it sure does what I want. Maybe someone can confirm that this is indeed the expected behavior and that I can rely on the method to return a unique id value within the same process.

This may also suit requirements where a random, unique value is needed, though "random" is not really what is being generated. I get: d28, d29, d30 etc.

Thanks for looking into it,

Cheers,
-- Abel Braaksma

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.