The structure of your input and output seems to be essentially the same, so
an ordinary recursive tree-walk using apply-templates should do the job:
<xsl:template match="TaxonomyNode">
<xsl:copy>
<xsl:copy-of select="@*">
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="Description">
<Description>
<w:r>
<w:t><xsl:value-of select="."/></w:t>
</w:r>
</Description>
</xsl:template>
Or have I missed something?
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Andy Carr1 [mailto:CARRA(_at_)uk(_dot_)ibm(_dot_)com]
Sent: 26 February 2007 16:13
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Processing Nested Lists
Hi
Does anybody know how do you process nodes within a tag that
are nested to an undefined depth.
I have a tag structure that looks like this:
<TaxonomyEntries>
- - -<TaxonomyNode> (1 to infinity)
- - - - - -<Description />
- - - - - -<TaxonomyNode /> (0 to infinity)
- - -<TaxonomyNode>
<TaxonomyEntries>
And I have some XML that looks like this:
<TopTag>
<TaxonomyEntries>
<TaxonomyNode name="Arbitrary Name"> -----Top
Level Node
<Description>any description</Description>
<TaxonomyNode name="another name">
<TaxonomyNode name="yet another name">
<Description>any description</Description>
<TaxonomyNode name="and yet another name">
<Description>any description</Description>
</TaxonomyNode>
</TaxonomyNode>
</TaxonomyNode>
</TaxonomyNode>
<TaxonomyNode name="Arbitrary Name"> -----Top
Level Node
<Description>any description</Description>
<TaxonomyNode name="another name">
<Description>any description</Description>
</TaxonomyNode>
</TaxonomyNode>
</TaxonomyEntries>
</TopTag>
I need to apply a stylesheet (XSL v2.0) to this XML to create
a Table in Word so that each Top Level TaxonomyNode is in a
separate Table Row and the children and childrens-children
are all nested accordingly with their descriptions displayed.
<w:tbl>
<w:tblPr>
<w:tblGrid>
<w:tr>
<TaxonomyEntries>
<w:tr>
<w:tc>
<w:p>
<TaxonomyNode name="Arbitrary Name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
<TaxonomyNode name="another name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
<TaxonomyNode name="yet another name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
<TaxonomyNode name="and yet another name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
</TaxonomyNode>
</TaxonomyNode>
</TaxonomyNode>
</TaxonomyNode>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tc>
<w:p>
<TaxonomyNode name="Arbitrary Name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
<TaxonomyNode name="another name">
<Description>
<w:r>
<w:t>any description</w:t>
</w:r>
</Description>
</TaxonomyNode>
</TaxonomyNode>
</w:p>
</w:tc>
</w:tr>
</TaxonomyEntries>
<w:tbl>
Could any one give me some pointers on how to achieve this
nesting. It seems to me that some sort of recursion is in
order but I'm not sure how to implement it when there is no
fixed depth to the nesting i.e there is no break-out parameter.
Hopefully
Andy
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales
with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth,
Hampshire PO6 3AU
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--