This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Generating multi-level recursive nested lists??


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]