This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
generating a repeatable unique id
- To: xsl-list at lists dot mulberrytech dot com
- Subject: [xsl] generating a repeatable unique id
- From: "Sebastian Rahtz" <sebastian dot rahtz at computing-services dot oxford dot ac dot uk>
- Date: Sun, 29 Jul 2001 00:28:45 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
Consider this skeleton document:
<root>
<front>
<div/><div/><div/>
</front>
<body>
<div/><div/><div/>
</body>
</root>
I want to generate a repeatable ID for any <div> on the fly.
The idea is to process the document and return a list of sections;
each will be a link to the same document, with a parameter containing
an ID for the section. So in URI parlance, I'll ask for "index.xml"
now, which will contain generated links to eg "index.xml?ID=div33".
All well and easy, if the <div> elements have ID attributes, but they
don't. And generate-id() is not guarenteed to be the same on the next
iteration (well, it isn't with libxslt, at least). So I thought I'd
make myself a key table, which lets me identify a target <div> quickly
when the key value is passed in:
<xsl:key name="DIVS"
match="div"
use="concat(name(..),concat('_',concat(name(.),concat('_',count(preceding-sibling::div)))))"/>
This works, but the procesing cost looks to be silly, doing that
count of preceding-siblings for every div.
Can anyone suggest a better system? or am I simply barking up the
wrong tree?
maybe the best answer is to insist on ID attributes for my <div> elements...
Sebastian
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list