[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Todd,
I'd approach this by defining a key that would let me retrieve row elements by their assigned parent:
<xsl:key name="row-by-parent" match="row" use="site-parent"/>
(Look up keys in a good reference to learn the details of how they work.) Then I'd design a template matching rows:
<xsl:template match="row">
<site>
<!-- first, do whatever I'm going to do -->
<xsl:copy-of select="site_name | site_ID"/>
...
<!-- then, process its "children" using my key -->
<xsl:apply-templates mode="in-group" select="key('row-by-parent', site_id)"/>
</site>
</xsl:template>
Doing this I'd get a recursive operation that would go all the way down the tree.
In order to prevent repeat occurrences, initiate this process only for rows with site-parent of 0:
I hope that's enough to get you going -- cool problem.
At 11:06 AM 8/22/2003, you wrote:
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Re: [xsl] Siblings to child - Hierarchy
Subject: Re: [xsl] Siblings to child - Hierarchy From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Fri, 22 Aug 2003 13:52:57 -0400 |
Todd,
I'd approach this by defining a key that would let me retrieve row elements by their assigned parent:
<xsl:key name="row-by-parent" match="row" use="site-parent"/>
(Look up keys in a good reference to learn the details of how they work.) Then I'd design a template matching rows:
<xsl:template match="row">
<site>
<!-- first, do whatever I'm going to do -->
<xsl:copy-of select="site_name | site_ID"/>
...
<!-- then, process its "children" using my key -->
<xsl:apply-templates mode="in-group" select="key('row-by-parent', site_id)"/>
</site>
</xsl:template>
Doing this I'd get a recursive operation that would go all the way down the tree.
In order to prevent repeat occurrences, initiate this process only for rows with site-parent of 0:
<xsl:template name="rowset"> <xsl:apply-templates select="row[site_parent = 0] </xsl:template>
I hope that's enough to get you going -- cool problem.
Cheers, Wendell
At 11:06 AM 8/22/2003, you wrote:
I am new to xsl and am having a tough time with a template to transform the results of an oracle "connect by" query into a hierarchical xml document.
The xml results of a sample query is below:
<page> <rowset> <row> <site_id>1</site_id> <site_name>Test Parent1</site_name> <site_parent>0</site_parent> <level>1</level> <path>/0</path> </row> <row> <site_id>2</site_id> <site_name>Test Child1 of Test Parent1</site_name> <site_parent>1</site_parent> <level>2</level> <path>/0/1</path> </row> <row> <site_id>4</site_id> <site_name>Test Child1 of Test Child1</site_name> <site_parent>2</site_parent> <level>3</level> <path>/0/1/2</path> </row> <row> <site_id>3</site_id> <site_name>Test Parent2</site_name> <site_parent>0</site_parent> <level>1</level> <path>/0</path> </row> </rowset> </page>
where the site_parent value is the site_id of it's parent and a site_parent of 0 is a top-level node.
I would like to produce a hierarchical xml doc based upon these results of the form
<site> <site_id>1</site_id> <site_name>Test Parent1</site_name> <site> <site_id>2</site_id> <site_name> Test Child1 of Test Parent1</site_name> <site> <site_id>4</site_id> <site_name>Test Child2 of Test Child1</site_name> </site> </site> </site> <site> <site_id>3</site> <site_name>Test Parent2</site_name> </site>
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Siblings to child - Hiera, Michael Kay | Thread | RE: [xsl] Siblings to child - Hiera, Todd Kleine |
RE: [xsl] Date format, Chang, Shining | Date | RE: [xsl] numbering and document(), Michael Kay |
Month |