xsl-list
[Top] [All Lists]

Re: [xsl] How to use generate-id() inside an xsl:function without a node available?

2007-02-27 13:48:06
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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>