Subject: [xsl] Finding nester distinct items From: "Craig Kattner" <CKattner@xxxxxxxxxxxxxx> Date: Mon, 10 Mar 2003 13:26:48 -0600 |
I have the following XML: <products> <product id="439" model="FD12H"> <desc>text</desc> <product_fact id="5" name="Finish"> <val>Ivory Decorative</val> </product_fact> <product_fact id="8" name="Hold"> <val>no</val> </product_fact> <product_fact id="6" name="Pole"> <val>SPST</val> </product_fact> <product_fact id="7" name="Time"> <val>12 hours</val> </product_fact> </product> <product id="439" model="FD6H"> <desc>text</desc> <product_fact id="5" name="Finish"> <val>Ivory Decorative</val> </product_fact> <product_fact id="8" name="Hold"> <val>no</val> </product_fact> <product_fact id="6" name="Pole"> <val>SPST</val> </product_fact> <product_fact id="7" name="Time"> <val>6 hours</val> </product_fact> </product> <product id="439" model="FD4H"> <desc>text</desc> <product_fact id="5" name="Finish"> <val>Ivory Decorative</val> </product_fact> <product_fact id="8" name="Hold"> <val>no</val> </product_fact> <product_fact id="6" name="Pole"> <val>SPDT</val> </product_fact> <product_fact id="7" name="Time"> <val>4 hours</val> </product_fact> </product> </products> What I need is to get a distinct list of Pole val's and then for each Pole a distinct list of Time val's. (I need to be able to recreate this http://www.intermatic.com/comind/fdff.htm). The best I've come up with is: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" /> <xsl:template match="/"> <xsl:apply-templates select="//product" /> </xsl:template> <xsl:template match="product"> <xsl:apply-templates select="product_fact[@name='Pole']" mode="pole_values"> <xsl:sort select="@name" /> <xsl:sort select="val" /> </xsl:apply-templates> </xsl:template> <!-- get the unique pole values --> <xsl:template match="product_fact" mode="pole_values"> <xsl:for-each select="../product_fact[not(val=following::product_fact/val) and @name='Pole']"> <xsl:value-of select="val" /><br /> <xsl:apply-templates select="." mode="time_values" /> </xsl:for-each> </xsl:template> <!-- get the unique time values per pole --> <xsl:template match="product_fact" mode="time_values"> <xsl:for-each select="../ancestor::*/product/product_fact[not(val=following::product_fact/val) and @name='Time']"> <xsl:value-of select="." /><br /> </xsl:for-each> </xsl:template> </xsl:stylesheet> What I want is: SPST 12 Hours 6 Hours SPDT 4 Hours What I get is: SPST 12 Hours 6 Hours 4 Hours SPDT 12 Hours 6 Hours 4 Hours Using MSXML 4 SP 1 for this if it makes a difference. Thanks, Craig XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL Error, Jack Cane | Thread | Re: [xsl] Finding nester distinct i, G. Ken Holman |
Re: [xsl] XHTML output and special , Hannes Schmiderer | Date | RE: [xsl] XSL Error, Jack Cane |
Month |