This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: recursion questions
- To: xsl-list at lists dot mulberrytech dot com
- Subject: [xsl] Re: recursion questions
- From: Robert Koberg <rob at koberg dot com>
- Date: Tue, 30 Jan 2001 15:06:22 -0800
- Reply-To: xsl-list at lists dot mulberrytech dot com
To save somebody the time trying to explain the basics to me... I figured it
out. It was much simpler than I thought. Anyway, here is the template I
came up with that produces (most of) the desired results:
<xsl:template match="section">
<xsl:variable name="folder" select="@folder"/>
<xsl:value-of select="$folder"/> = new List(true, width, height,
"#EEEEEE");
<xsl:value-of select="$folder"/>.onexpand = colorize;
<xsl:value-of select="$folder"/>.setFont(<![CDATA["<FONT
FACE='Arial,Helvetica' SIZE='-1'>","</FONT>"]]>);
<xsl:apply-templates select="section"/>
<xsl:variable name="parent.folder" select="parent::section/@folder"/>
<xsl:if test="$parent.folder!=''">
<xsl:value-of select="$parent.folder"/>.addList(<xsl:value-of
select="$folder"/>, "<xsl:value-of select="@label"/>");
</xsl:if>
</xsl:template>
----- Original Message -----
From: "Robert Koberg" <rob@koberg.com>
To: <xsl-list@lists.mulberrytech.com>
Sent: Tuesday, January 30, 2001 7:31 AM
Subject: recursion questions
> I am having a problem understanding how to build some JavaScript for an
> exandable/collapsible list similar to a directory tree. If anybody can
help
> it would be greatly appreciated. I could include what I have been trying
> XSL-wise but it would probably be more distractive to the end goal. I
> cannot figure out how to build a recursive template to handle the
following
> XML (the desired output follows):
>
> <section role="level1" folder="root" label="Test">
> <page id="1"/>
> <section role="level2" folder="XSLXML" label="XSL/XML">
> <page id="2"/>
> <section role="level3" folder="XML" label="XML">
> <page id="3"/>
> <page id="4"/>
> </section>
> <section role="level3" folder="XSL" label="XSL">
> <page id="5"/>
> <page id="6"/
> </section>
> </section>
> <section role="level2" folder="JSDHTMLCSS" label="JS/DHTML/CSS">
> <section role="level3" folder="JS" label="JS">
> </section>
> <section role="level3" folder="DHTML" label="DHTML">
> </section>
> <section role="level3" folder="CSS" label="CSS">
> </section>
> </section>
> </section>
>
>
>
>
> ============================================================
> DESIRED OUTPUT
> -------------------------------------
> root = new List(true, width, height, bgColor);
> root.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'><B>","</B></FONT>");
> root.addItem("page id=1");
> XSLXML = new List(true, width, height, "#EEEEEE");
> XSLXML.onexpand = colorize;
> XSLXML.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> XSLXML.addItem("page id=2");
>
> XML = new List(false, width, height, bgColor);
> XML.onexpand = colorize;
> XML.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> XML.addItem("page id=3");
> XML.addItem("page id=4");
>
> XSLXML.addList(XML, "XML");
>
> XSL = new List(false, width, height, bgColor);
> XSL.onexpand = colorize;
> XSL.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> XSL.addItem("page id=5");
> XSL.addItem("page id=6");
> XSLXML.addList(XSL, "XSL");
>
> root.addList(XSLXML, "XML/XSL");
>
> JSDHTMLCSS = new List(true, width, height, "#EEEEEE");
> JSDHTMLCSS.onexpand = colorize;
> JSDHTMLCSS.setFont("<FONT FACE='Arial,Helvetica'
SIZE=-1'>","</FONT>");
>
> JS = new List(false, width, height, bgColor);
> JS.onexpand = colorize;
> JS.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> JS.addItem("Some JS stuff");
> JS.addItem("Some more JS stuff");
>
> JSDHTMLCSS.addList(JS, "JS");
>
> DHTML = new List(false, width, height, bgColor);
> DHTML.onexpand = colorize;
> DHTML.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> DHTML.addItem("Some DHTML stuff");
> DHTML.addItem("Some more DHTML stuff");
>
> JSDHTMLCSS.addList(DHTML, "DHTML");
>
> CSS = new List(false, width, height, bgColor);
> CSS.onexpand = colorize;
> CSS.setFont("<FONT FACE='Arial,Helvetica' SIZE=-1'>","</FONT>");
> CSS.addItem("Some CSS stuff");
> CSS.addItem("Some more CSS stuff");
>
> JSDHTMLCSS.addList(CSS, "CSS");
>
> root.addList(JSDHTMLCSS, "JS/DHTML/CSS");
>
> root.build(width/8,40);
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list