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

Re: [xsl] Assigning unique id to new node using generate-id()


Subject: Re: [xsl] Assigning unique id to new node using generate-id()
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 13 Aug 2003 17:57:57 +0100

> It appears as if the generate-id
> call doesn't observe existing id's in the current/copied credential nodes. 

that is so, the only thing generate-id() is defined to do is 
return a unique string that matches the Name production (so is usable as
an id) when applied to any node in the source. 

> My current workaround is to transform twice.  The first transformation appends
> the new credential node.  The second transformation assigns an id (using
> generate-id()) to any credential nodes without an id (probably only newly
> created).  Seems like I should be able to do it all in one transform.

That doesn't sound a safe workaround. You have no assurance that the ids
generated on the second pass won't be teh same as an existing id in your
source.

If you don't need the ids to be stable you could of course regenerate
the document wioth new ids in each case, generated by generate-id() they
would all then be distinct but also typically didffernt from teh id in
teh source.

Otherwise you need a different way to generate unique id. Two obvious contenders.
As your are always adding to teh doc you coul duse

<credential id="id{count(credential)}">
<username><xsl:value-of select="$username"/></username>
...

so the id will be id followed by teh number of elements you had before,
this will go up by one each time,

or you could use
<credential id="id{translate(java:getCurrentDateTimeGMT($dateHelper),
':- ','')}">

an use an id based on the current time.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread