Subject: Re: [xsl] Identify last node in nested nodeset with same name From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Fri, 24 Jun 2005 01:22:28 -0700 (PDT) |
Sorry, I forgot to say .. The XML file I used was - <?xml version="1.0"?> <root> <menu name="link1"/> <menu name="link2"> <menu name="link2a"/> <menu name="link2b"/> </menu> </root> Regards, Mukul --- Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote: > Hi Mat, > Please try this XSL .. It seems to solve the > problem > ... > > <?xml version="1.0"?> > <xsl:stylesheet > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:output method="xml" indent="yes" /> > > <xsl:template match="node() | @*"> > <xsl:copy> > <xsl:apply-templates select="node() | @*" /> > </xsl:copy> > </xsl:template> > > <xsl:template match="root"> > <ul> > <xsl:apply-templates /> > </ul> > </xsl:template> > > <xsl:template match="menu"> > <xsl:choose> > <xsl:when test="child::*"> > <li><xsl:value-of select="@name" /></li> > <ul> > <xsl:apply-templates /> > </ul> > </li> > </xsl:when> > <xsl:otherwise> > <li> > <xsl:value-of select="@name" /> > </li> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > </xsl:stylesheet> > > Regards, > Mukul > > --- Mat Bergman <matbergman@xxxxxxxxx> wrote: > > > I am working with XML data that shares the same > > element name for each node set, for example: > > > > <menu name="link1"/> > > <menu name="link2"> > > <menu name="link2a"/> > > <menu name="link2b"/> > > </menu> > > > > My XSL stylesheet transforms this into an HTML > > unordered list, like this: > > <ul> > > <li>link1</li> > > <li>link2 > > <ul> > > <li>link2a</li> > > <li>link2b</li> > > </ul> > > </li> > > </ul> > > > > I can't figure out how to identify the last > > second-tier node (in this example "link2b") so > that > > the stylesheet can write the closing </ul> tag for > > the > > nested list. I thought I would reference it with > > something like <xsl:if test="/menu/menu[last()]">, > > but > > my XPath must be incorrect because it fails. > > > > I am currently writing the opening <ul> and > closing > > </li> tags for the nested list with this: > > > > <xsl:template match="menu"> > > <xsl:if test="count(menu)>0"> > > <xsl:text><ul></xsl:text> > > </xsl:if> > > > > <xsl:if test="count(menu)=0"> > > <xsl:text></li></xsl:text> > > </xsl:if> > > </xsl:template> > > > > If I only knew how to identify the last node in > > /menu/menu, I could easily write the closing tag. > > > > Thanks, > > > > -Mat > > > > > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > > protection around > > http://mail.yahoo.com > > > > > > > > > ____________________________________________________ > > Yahoo! Sports > Rekindle the Rivalries. Sign up for Fantasy Football > > http://football.fantasysports.yahoo.com > > ____________________________________________________ Yahoo! Sports Rekindle the Rivalries. Sign up for Fantasy Football http://football.fantasysports.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Identify last node in nes, Mukul Gandhi | Thread | Re: [xsl] Identify last node in nes, Sam D. Chuparkoff |
Re: [xsl] Using Relative filepaths , Peter Gerstbach | Date | RE: [xsl] A linguistic question: a/, Michael Kay |
Month |