[Home] [By Thread] [By Date] [Recent Entries]
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. Any ideas? It seems easy enough, but I couldn't find any (quick) resolutions. TIA, Cheers, -- Abel
|

Cart



