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

Re: [xsl] generating unique ids


Subject: Re: [xsl] generating unique ids
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Tue, 03 Nov 2009 19:46:45 +0100

a kusa wrote:

I am using generate-id() function to generate unique ids through out
my document. But I am having a problem here.

My output looks like this:
<root>

<step1 id="idstep_2_566">

.....
<step1>
<step1 id="idstep_2_566">



</step1>

</root>

Now in  my xslt for template 'step1' I have a generate-id() function.
But for some reason it generates the same id for 'step1' elements.
How do I prevent it from generating the same id that was generated for
the previous step1 node? Do I have to use <xsl:key>?

generate-id() will give a unique id for the context node. If that is the same both times your template is processed then you will get the same id.
So generate-id() is useful if you have e.g.


<list>
  <foo>...</foo>
  <foo>...</foo>
  <foo>...</foo>
</list>

in your input and then write a template for 'foo' elements in the stylesheet
  <xsl:template match="foo">
    <li id="{generate-id()}">
      <xsl:apply-templates/>
    </li>
  </xsl:template>


--


	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/


Current Thread
Keywords