Re: [xsl] Unique IDs?

Subject: Re: [xsl] Unique IDs?
From: Sven Waibel <sven.waibel@xxxxxxxx>
Date: Wed, 23 Mar 2005 10:13:08 +0100
Yes i know, i wrote a second mail with the correct contents.

Subject: Unique IDs No.2

Sven


Michael Kay wrote:

> Your stylesheet is giving you exactly what you asked for: it's outputting
> the Status value only if it is the first one with that combination of id's.
> 
> To treat the contents of each <pc> as a separate group you will need to
> factor the identity (generate-id()) of the pc element into the key value.
> 
> Michael Kay
> http://www.saxonica.com/ 
> 
> 
>>-----Original Message-----
>>From: Sven Waibel [mailto:sven.waibel@xxxxxxxx] 
>>Sent: 23 March 2005 08:38
>>To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>>Subject: [xsl] Unique IDs?
>>
>>
>>Good morning!
>>
>>in my xsl:
>>
>><xsl:key name="ids" match="tc/pc/*[@id]" 
>>use="concat(../../@id,@id)" />
>>
>><xsl:template match="pc">
>>	<xsl:apply-templates select="*[@id and generate-id(.)= 
>>generate-id(key('ids', concat(../../@id,@id)))]" />
>></xsl:template>
>>
>><xsl:template match="tc/pc/*[@id]">
>>  <fo:block><xsl:value-of select="@name" /></fo:block>
>></xsl:template>
>>
>>
>>my xml:
>>
>><tc id="123">
>>	<pc>
>>		<status id="1" name="Status 1"/>
>>		<status id="2" name="Status 2"/>
>>		<status id="1" name="Status 1"/>
>>	</pc>
>>	<pc>
>>		<status id="5" name="Status 5"/>
>>		<status id="1" name="Status 1"/>
>>	</pc>
>>	<pc>
>>		<status id="1" name="Status 1"/>
>>	</pc>
>></tc>
>>
>>The current output looks as followed:
>>
>>"pc1"   Status 1
>>	Status 2
>>
>>"pc2"	Status 5
>>
>>"pc3" 	
>>
>>
>>The output should look as followed:
>>
>>"pc1"   Status 1
>>	Status 2
>>
>>"pc2"	Status 5
>>	Status 1
>>
>>"pc3" 	Status 1
>>
>>Status No. must not exist more than one in one "pc".
>>
>>What's wrong with my Stylesheet?
>>
>>Thanks
>>
>>Best regards
>>Sven

Current Thread