This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Generating multi-level recursive nested lists??
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] Generating multi-level recursive nested lists??
- From: "Arne Borkowski \(borko.net\)" <arne at borko dot net>
- Date: Tue, 10 Apr 2001 02:21:55 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Paul,
I tried some changes and I guess I did in the way you'd like it.
Give it a try ...
By the way ... I think you should not worry about Cocoon instructions,
but I use it and tested it with that.
----------8<-------------- "my" XSL stylesheet -------------
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:processing-instruction
name="cocoon-format">type="text/html"</xsl:processing-instruction>
<HTML>
<BODY>
<H1><xsl:value-of select="toc/title"/></H1>
<ol>
<xsl:apply-templates select="toc/folder"/>
</ol>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="folder">
<li id="foldheader"><xsl:value-of select="foldertitle"/></li>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="folder/folder">
<ol>
<LI id="foldheader"><xsl:value-of select="foldertitle"/></LI>
<xsl:apply-templates />
</ol>
</xsl:template>
<xsl:template match="list">
<ol id="foldinglist">
<xsl:for-each select="file">
<li>
<xsl:value-of select="." />
<xsl:apply-templates />
</li>
</xsl:for-each>
</ol>
</xsl:template>
<xsl:template match="file">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="text()">
<!-- <xsl:value-of select="." />
-->
</xsl:template>
</xsl:stylesheet>
-----8<---------- "my" HTML output ------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<BODY>
<H1>Paul's XML Test</H1>
<ol>
<li id="foldheader">Software<ol id="foldinglist">
<li>outer 1
<li>outer 2
</ol>
<ol>
<LI id="foldheader">Nested<ol id="foldinglist">
<li>nested 1
<li>nested 2
</ol>
</ol>
<li id="foldheader">Software2<ol id="foldinglist">
<li>outer 1b
<li>outer 2b
</ol>
</ol>
</BODY>
</HTML>
<!-- This page was served in 63 milliseconds by Cocoon 1.8.2 -->
Maybe I was wrong with what you really wanted ... however it seemed
close for me ...
Regards, Arne Borkowski
Hamburg / Germany
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Paul Foege
> Sent: Tuesday, April 10, 2001 12:28 AM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] Generating multi-level recursive nested lists??
>
>
> Hello
>
> I have been struggling with this for the last few days, and I
> can't seem to
> get it to work. I contacted some other supposed "XML/XSL
> Experts" and they
> couldn't help me. Any help would be greatly appreciated.
>
>
> I have the following xml:
>
> <toc>
> <title>Paul's XML Test</title>
> <folder>
> <foldertitle>Software</foldertitle>
>
> <list>
> <file>outer 1</file>
> <file>outer 2</file>
> </list>
>
> <folder>
> <foldertitle>Nested</foldertitle>
> <list>
> <file>nested 1</file>
> <file>nested 2</file>
> </list>
> </folder>
>
> </folder>
>
> <folder>
> <foldertitle>Software2</foldertitle>
> <list>
> <file>outer 1b</file>
> <file>outer 2b</file>
> </list>
> </folder>
>
> </toc>
>
>
> I am trying to apply an XSL style sheet to produce the following HTML:
>
> <ul>
>
> <li id="foldheader">Software</li>
> <ul id="foldinglist">
> <li>outer 1</li>
> <li>outer 2</li>
> <li id="foldheader">Nested</li>
>
> <ul id="foldinglist">
> <li>nested 1</li>
> <li>nested 2</li>
> </ul>
> </ul>
>
> <li id="foldheader">Software2</li>
> <ul id="foldinglist">
> <li>outer 1</li>
> <li>outer 2</li>
> </ul>
>
> </ul>
>
>
> Here is my XSL: It messes up on the nesting level of my <LI>s.
>
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>
> <xsl:template match="/">
> <HTML>
> <BODY>
>
> <H1><xsl:value-of select="toc/title"/></H1>
>
> <ol>
> <xsl:apply-templates select="toc/folder"/>
> </ol>
>
> </BODY>
> </HTML>
> </xsl:template>
>
>
> <xsl:template match="folder">
> <li id="foldheader"><xsl:value-of select="foldertitle"/></li>
> <xsl:apply-templates />
> </xsl:template>
>
>
> <xsl:template match="folder/folder">
> <ol>
> <LI id="foldheader"><xsl:value-of select="foldertitle"/></LI>
> <xsl:apply-templates />
> </ol>
> </xsl:template>
>
>
> <xsl:template match="list">
> <ol id="foldinglist">
> <xsl:for-each select="file">
> <li><xsl:apply-templates /></li>
> </xsl:for-each>
> </ol>
> </xsl:template>
>
>
> <xsl:template match="text()"><xsl:value-of />
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
smime.p7s