Subject: RE: Unique IDs?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 23 Mar 2005 09:04:45 -0000
|
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
|