- From: Karthikeyan <karthikeyan.balasubramanian@aspiresys.com>
- Date: Fri, 23 Apr 2004 01:22:40 +0530
- To: RDayal@hmsy.com, www-xsl-fo@w3.org
Hi,
RDayal@hmsy.com wrote:
>Hello:
>
>I have an XML document of the format:
>
><records>
> <record num="1" letter="A" color="blue"/>
> <record num="1" letter="A" color="red"/>
> <record num="1" letter="B" color="green"/>
> <record num="1" letter="B" color="yellow"/>
></records>
>
>what i need to do is output in the following format:
>
>Letter = A
>color = blue
>color = red
>
><---next page-->
>
>Letter = B
>color = green
>color = yellow
>
>I can only get the first record (for A and its colors) with the XSL that I
>have written.
>
>Could somebody please show me a sample XSL to get the desired output? I
>would be very thankful.
>
>
>-Ruchi
>
>
>
>
Try this code. It might give you good start
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:variable name="unique_letters"
select="/records
/record[not(@letter=preceding-sibling::record/@letter)]
/@letter"
/>
<xsl:template match="record">
<xsl:for-each select="$unique_letters">
Letter = <xsl:value-of select="." /><br />
<xsl:for-each select="//record[@letter=current()]">
color = <xsl:value-of select="@color" /><br />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
It does grouping but I couldnt prevent duplication. Need little more work.
Karthikeyan B
Received on Thursday, 22 April 2004 15:58:15 UTC