[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] How to use generate-id() inside an xsl:function without a node available?
Subject: Re: [xsl] 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
|
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
|