This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Recursion Examples
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] Recursion Examples
- From: "Jon Wynacht" <jwynacht at cisco dot com>
- Date: Tue, 1 May 2001 05:47:23 -0700
- Reply-To: xsl-list at lists dot mulberrytech dot com
All,
Good advice thus far. However. I want to be able to display the results as a
tree in html...for example:
root module
|--modulue1
|---module4
|---module5
|---module6
|--module2
|---module7
|---module8
|---module9
Or maybe I used nice icons in place of the words. Regardless, I need to
physically show with icons or text what Dan is showing in the xml structure.
Thoughts?
Jon
-----Original Message-----
From: owner-xsl-list@lists.mulberrytech.com
[mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Dan Diebolt
Sent: Monday, April 30, 2001 10:06 PM
To: xsl-list@lists.mulberrytech.com
Subject: Re: [xsl] Recursion Examples
>I need to be able to build a tree that represents the data
XML is basically a tree from the get go, so it is a little
unclear what 'tree' you want to build. I interpreted you problem
to basically ask how to build the containment hierarchy
of modules that included other modules based on the relationship
joining <id> to <parentid>. Also, I fleshed out your input XML
to be three-deep and three-wide versus your original four-deep
and one-wide example. To show the module containment clearly, I
pushed your <id> and <name> tags into attributes.
Regards,
Dan
-------------------------------------------
File: VersionModule20APril2001.out
<?xml version="1.0" encoding="utf-8"?>
<module id="0" name="foo">
<module id="1" name="bar">
<module id="4" name="saz"/>
<module id="5" name="war"/>
<module id="6" name="doo"/>
</module>
<module id="2" name="baz">
<module id="7" name="daz"/>
<module id="8" name="diz"/>
<module id="9" name="wat"/>
</module>
<module id="3" name="bat">
<module id="a" name="yat"/>
<module id="b" name="yoo"/>
<module id="c" name="sor"/>
</module>
</module>
File: VersionModule20APril2001.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="VersionModule20APril2001.xsl"?>
<version>
<module><id>0</id><name>foo</name><parentid>root</parentid></module>
<module><id>1</id><name>bar</name><parentid>0</parentid></module>
<module><id>2</id><name>baz</name><parentid>0</parentid></module>
<module><id>3</id><name>bat</name><parentid>0</parentid></module>
<module><id>4</id><name>saz</name><parentid>1</parentid></module>
<module><id>5</id><name>war</name><parentid>1</parentid></module>
<module><id>6</id><name>doo</name><parentid>1</parentid></module>
<module><id>7</id><name>daz</name><parentid>2</parentid></module>
<module><id>8</id><name>diz</name><parentid>2</parentid></module>
<module><id>9</id><name>wat</name><parentid>2</parentid></module>
<module><id>a</id><name>yat</name><parentid>3</parentid></module>
<module><id>b</id><name>yoo</name><parentid>3</parentid></module>
<module><id>c</id><name>sor</name><parentid>3</parentid></module>
</version>
File: VersionModule20APril2001.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="version"/>
</xsl:template>
<xsl:template match="version">
<xsl:apply-templates select="module[parentid='root']">
<xsl:with-param name="ParentId" select="'root'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="module">
<xsl:param name="ParentId"/>
<xsl:variable name="Id" select="id"/>
<xsl:copy>
<xsl:attribute name="id"><xsl:value-of select="id"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="name"/></xsl:attribute>
<xsl:apply-templates select="parent::*/module[parentid=$Id]">
<xsl:with-param name="ParentId" select="parentid"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list