Hi,
I'm new to the list, and a relative newbie to XSL. I'm able
to do the simpler
things, but am still learning.
At the moment, I'm having problems figuring out how to store
menu items in
XML, then render them in XSL.
I'm trying to get output something like this:
<ul>
<li>
One
<ul>
<li>One dot One</li>
</ul>
</li>
</ul>
Of course, there can be multiple top level items, each of
which may have many
sub items and/or sub-lists.
With regards to the XML, I've tried to create a nested
structure something
like so:
<menu>
<item>
<name>One</name>
<url></url>
<item>
<name>One dot One</name>
<url>http://someplace.com</url>
</item>
</item>
</menu>
Look good, models the hierarchy using hierarchy, easy to write a conversion for.
I like this structure as it directly reflects the menu, but
have only had some
success with the XSL. I could not get the sub menu items to
be treated
differently - the only way I could make this work was to
enclose each <li>
item in <ul>, and that's not quite what I want.
<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>
So I tried to change the XML a bit to something like so:
<menu>
<item parent="0">
<id>1</id>
<name>One</name>
<url></url>
</item>
<item parent="1">
<id>2</id>
<name>One dot One</name>
<url>http://someplace.com</url>
</item>
</menu>
I have partial success with this method as well, but cannot
properly select
the parent items only (any item with a parent=0), and then
create the correct
sub list.
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>
--~--