Subject: Re: [xsl] Preceding-Sibling Axes in Context node. From: Mukul Gandhi <mukulgandhi2003@xxxxxxxxxxx> Date: Wed, 21 Apr 2004 17:13:07 +0100 (BST) |
Hi Viral, Please try the XSL. <?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" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:key name="key-state" match="record" use="@state"/> <xsl:template match="/root"> <html> <table> <xsl:for-each select="record"> <xsl:if test="generate-id(.) = generate-id(key('key-state', @state)[1])"> <tr> <xsl:for-each select="key('key-state', @state)"> <td> <xsl:value-of select="@city"/> </td> </xsl:for-each> </tr> </xsl:if> </xsl:for-each> </table> </html> </xsl:template> </xsl:stylesheet> Regards, Mukul --- "Patel, Viral" <viral.patel@xxxxxxxxxxxxxxxxxxxx> wrote: > Hi, > > I have a question about preceding-sibling. I have > following XML > > <root> > > <record id="1" city="Carbondale" state="IL"/> > <record id="2" city="Columbia" state="MO"/> > <record id="3" city="Bloomington" state="IL"/> > <record id="4" city="St. Louis" state="MO"/> > <record id="5" city="Chicago" state="IL"/> > > </root> > > And I have following XSL: > > <?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:template match="/"> > <table> > <xsl:apply-templates match="//root/record"> > <xsl:sort select="@state"/> > <xsl:sort select="@city"/> > </xsl:apply-templates> > </table> > </xsl:template> > > <xsl:template match="record"> > <xsl:if test="not ( (preceding-sibling::*/@state) = > @state )"> > <!-- Some logic that will print out the create a > new table > row (tr) and print out the state name....--> > </xsl:if> > <td><xsl:value-of select="@city"/></td> > </xsl:template> > > </xsl:stylesheet> > > What I want is an output where it would to create > one table row per state > and list all of its city in the same row but a > different <td>. In my root > template I am sorting the document by state when I > do apply templates. In > the "record" template, I do when I do > "preceding-sibling::*/@state" it would > bring me back the state attribute of the preceding > sibling in the acutal xml > document and not in the current context. > > So for example if I just did apply-templates sorted > by state and city, xsl > should process my nodes in the order below and I > have also printed out the > "preceding-sibling" value that my xsl is giving me > for each node and the > "preceding-sibling" value that I would expect.: > > IL, Bloomington > -XSL's preceding-sibling: MO, Columbia > -Preceding-Sibling value that I would like: none > IL, Carbondale > -XSL's preceding-sibling: none > -Preceding-Sibling value that I would like: IL, > Bloomington > IL, Chicago > -XSL's preceding-sibling: MO, St. Louis > -Preceding-Sibling value that I would like: IL, > Carbondale > MO, Columbia > -XSL's preceding-sibling: IL, Carbondale > -Preceding-Sibling value that I would like: IL, > Chicago > MO, St. Louis > -XSL's preceding-sibling: IL, Bloomington > -Preceding-Sibling value that I would like: MO, > Columbia > > What would I need to do to achieve the > preceding-sibling value that I want? > Is it even possible? I already tried using > <xsl:key> but that didnt work > either. If you want me to explain my question then > let me know. > > Any help would be appreciated. > > Thanks, > V Patel. > ________________________________________________________________________ Yahoo! India Matrimony: Find your partner online. http://yahoo.shaadi.com/india-matrimony/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Preceding-Sibling Axes in, David Carlisle | Thread | RE: [xsl] Preceding-Sibling Axes in, Patel, Viral |
RE: [xsl] Problem with xsl:if, Kenny Akridge | Date | RE: [xsl] Preceding-Sibling Axes in, Wendell Piez |
Month |