Subject: RE: [xsl] Identify last node in nested nodeset with same name From: "Aron Bock" <aronbock@xxxxxxxxxxx> Date: Fri, 24 Jun 2005 04:33:48 +0000 |
<data> <menu name="link1"/> <menu name="link2"> <menu name="link2a"/> <menu name="link2b"/> </menu> </data>
<xsl:template match="/data"> <xsl:call-template name="write-menu"> <xsl:with-param name="items" select="menu"/> </xsl:call-template>
<xsl:template name="write-menu"> <xsl:param name="items" select="/.."/> <ul> <xsl:for-each select="$items"> <li> <xsl:value-of select="@name"/> <xsl:if test="menu"> <xsl:call-template name="write-menu"> <xsl:with-param name="items" select="menu"/> </xsl:call-template> </xsl:if> </li> </xsl:for-each> </ul> </xsl:template> </xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?> <ul> <li>link1</li> <li>link2<ul> <li>link2a</li> <li>link2b</li> </ul> </li> </ul>
From: Mat Bergman <matbergman@xxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Identify last node in nested nodeset with same name Date: Thu, 23 Jun 2005 19:26:19 -0700 (PDT)
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Identify last node in nested , Mat Bergman | Thread | RE: [xsl] Identify last node in nes, Mat Bergman |
[xsl] xsl variable to jsp public va, -= jay =- | Date | [xsl] DocBook XSL Stylesheets ETA?, David Nedrow |
Month |