Subject: Re: Unique IDs?
From: Sven Waibel <sven.waibel@xxxxxxxx>
Date: Wed, 23 Mar 2005 11:21:49 +0100
|
That's the correct xml:
<tc id="123">
<pc>
<status id="1" name="Status 1"/>
<status id="2" name="Status 2"/>
<status id="1" name="Status 1"/>
</pc>
</tc>
<tc id="124">
<pc>
<status id="5" name="Status 5"/>
<status id="1" name="Status 1"/>
</pc>
</tc>
<tc id="125">
<pc>
<status id="1" name="Status 1"/>
</pc>
</tc>
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: 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
|