Re: [xsl] question about generate-id()

Subject: Re: [xsl] question about generate-id()
From: ac <ac@xxxxxxxxxxxxx>
Date: Fri, 06 Aug 2010 08:18:55 -0400

On Thu, 5 Aug 2010 10:11:06 +0100 (IST)
"Tony Graham"<Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx>  wrote:

Possibly not everybody uses @id to mean an ID, plus there's plenty of
other attributes, such as @name, that may or may not be IDs. The only
attribute that is guaranteed to be an ID is @xml:id, and that
postdates XSLT 1.0 by about six years.
In which case it is badly|wrongly named. I'd like to ask James about
the intention. I'm pretty sure it was for (what is now) xml:id

There are many uses for generate-id() apart from generating an id for an @id or @xml:id.
It generates node-based string uniqueness in a transformation which can be used in different ways, including combined with prefix and or suffix

Adding a generate-xml-id-from-source() may be a useful addition although it seems quite specific

Why not just use concat() or string-join(), along with generate-id() to do any and all of those and more things?

Am I missing something here?


There is no guarantee that a generated unique identifier will be
distinct from any unique IDs specified in the source document.

Yuk. IMHO that's a spec weakness. More constrained, surely
it's not rocket science to implement.
You could do it yourself
Which would IMHO be a kludge to work round a spec weakness.
Yes. Lots of ways to do it as this thread has shown.

In this brave new world of streaming XSLT, you might not see the
existing ID value until after you've generated what would be a
duplicate ID.
Even with a large document I'm pretty sure it's possible to pull
any (xml:)id values - from the source, not the built output
to check for uniqueness.

Current Thread