Subject: Re: [xsl] Identify last node in nested nodeset with same name From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Fri, 24 Jun 2005 01:04:38 -0700 (PDT) |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Identify last node in nes, Mukul Gandhi | Thread | Re: [xsl] Identify last node in nes, Mukul Gandhi |
RE: [xsl] Exception: Saxon requires, Michael Kay | Date | Re: [xsl] Using Relative filepaths , Peter Gerstbach |
Month |