[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: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Tue, 27 Feb 2007 20:20:48 +0000
Re:  How to use generate-id() inside an xsl:function  w
On 2/27/07, Abel Braaksma <abel.online@xxxxxxxxx> wrote:
Hi List,

This seems an obvious question to ask, but I couldn't find anything on
the net (but more often than not, it is a matter of wrong keywords, I am
sure). The issue is this: I have a function that generates some nodes
based on some strings and these nodes must receive a unique ID/IDREF
value. Normally, one would use generate-id(), but inside a function (or
inside anything that does not have a context node), generate-id() will fail.

My question: how can I create unique identifiers without a node in sight?

Example function (which will err):

<xsl:function name="my:dupSVGText">
   <xsl:variable name="new-id" select="generate-id()" />
   <svg:text id="{$new-id}">some text</svg:text>
   <svg:use xlink:href="#{$new-id}" y="10" />
</xsl:function>

My original function is a bit larger (ahum, counted > 100 lines today,
time for refactoring...) and creates some SVG objects that reference one
another, which is why I must make sure the ID for referencing the
xlink:href attributes are unique within the document. Don't let the SVG
and XLink upset or distract you, I just mention it to explain my use-case.

And no, there's no way that there will be a node in sight (it is really
disconnected from the source document). Yes, I can use different
techniques than xsl:function if needed (of course). Oh, and before I
forget: I can do so with extension functions or assignable variables
(saxon), but I'd rather not to.

As generate-id() provides node identity and "there's no node in sight" then I would say generate-id() is the wrong function to use here.

I guess you'll have to add a param to the function and supply the id -
whatever's calling the function should be able to come up with a
suitable value...

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.