Thank you for the response Jarno.
I tried your template sample, but kept getting errors on the first
xsl:template line. That's PHP for you though, it's VERY picky I'm finding,
and I don't see anything in the line that would trigger an error.
I did manage to resolve the problem though. I took my clue from your "menu"
template, and kicked myself for not seeing the simpler way sooner. Instead
of simply putting a new <item> element inside an existing one, I wrapped the
sub-menu items in a <menu> element. Then, with the XSL, I could write a
template for the <menu> elements that would create the <ul> tags... er,
here's the new xsl - I think it's easier to see what I did than me trying to
explain it:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="menu">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="item">
<li>
<a href="{url}">
<xsl:value-of select="name"/>
</a>
</li>
<xsl:apply-templates select="menu"/>
</xsl:template>
</xsl:stylesheet>
with the xml looking like so:
<menu>
<item>
<name>Biographies</name>
<url>#</url>
<menu>
<item>
<name>Chatter Box</name>
<url>#</url>
</item>
</menu>
</item>
<item>
<name>Media</name>
<url>#</url>
<menu>
<item>
<name>Audio</name>
<url>#</url>
<menu>
<item>
<name>Song 1</name>
<url>#</url>
</item>
<item>
<name>Song 2</name>
<url>#</url>
</item>
</menu>
</item>
<item>
<name>Images</name>
<url>#</url>
</item>
</menu>
</item>
</menu>
I'm getting the output I was after now. Now I can focus on the CSS side of
things and make my menu all pretty.. :)
Thanks again.
Shawn
On Friday 19 November 2004 02:59, Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com
wrote:
<xsl:template match="menu">
<html>
<head>
<title></title>
</head>
<body>
<ul>
<xsl:apply-templates select="item"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="item">
<li>
<a href="{url}">
<xsl:value-of select="name"/>
</a>
<xsl:if test="item">
<ul>
<xsl:apply-templates select="item"/>
</ul>
</xsl:if>
</li>
</xsl:template>
But if you have multiple top-level items, do they all have @parent = 0? How
do you know which item is inside which. I think you're better off using the
earlier XML vocabulary. If you want to add numbering, add
<xsl:number level="multiple"/>
as the first child of li element, just before a element.
Cheers,
Jarno
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--