[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: Re: [xsl] question about generate-id()
From: "Tony Graham" <Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 5 Aug 2010 10:11:06 +0100 (IST)

On Thu, August 5, 2010 7:49 am, Dave Pawson wrote:
> On Wed, 04 Aug 2010 18:18:40 -0400
> "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
>
>> The uniqueness of identifiers is guaranteed only when generate-id()
>> is used for every identifier.  This makes sense because generate-id()
>> has no way of knowing which of your attributes are identifiers and
>> which are not.
>
> Not even when the 'id' values are @id? That sounds wrong Ken.

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.

> 16.6.4
> 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 with keys and a bit of checking, but in the
general case, not everybody will need to search a possibly large source
document in the off-chance that a duplicate ID will be generated (though
if you keep using the same XSLT processor over slightly modified versions
of the same source document, you do stand a good chance of creating
duplicates.)

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.

The earlier idea of adding a timestamp to the generated ID, or even a
known prefix if you do things in fixed phases, would be less overhead than
avoiding existing IDs.  I've also implemented a uuid() extension function
for a client to guarantee that generated IDs are unique.

Regards,


Tony Graham                         Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx
Director                                  W3C XSL FO SG Invited Expert
Menteith Consulting Ltd                               XML Guild member
XML, XSL and XSLT consulting, programming and training
Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
Registered in Ireland - No. 428599   http://www.menteithconsulting.com
  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
xmlroff XSL Formatter                               http://xmlroff.org
xslide Emacs mode                  http://www.menteith.com/wiki/xslide
Unicode: A Primer                               urn:isbn:0-7645-4625-2


Current Thread
Keywords