The general model for this kind of problem is to use xsl:apply-templates
to process the tree recursively, in the normal way, except that at each
stage you select the logical children of a node rather than its physical
children. You can find the logical children using:
<xsl:key name="ref" match="ref" use="."/>
<xsl:template match="elem">
<xsl:apply-templates select="key('ref', @id)"/>
</xsl:template>
I haven't done anything here about the w,x,y,z in your problem, which I
don't think I understand.
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Peter Biechele
Sent: 10 December 2003 13:09
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Question about generating a full tree from a
tree with xrefs using xslt ?
I have the following problem with XSLT:
The input stream is like:
<elem id="a1" type="w">
<text>aa</text>
</elem>
<elem id="a2" type="x">
<text>bb</text>
<ref>a1</ref>
</elem>
<elem id="a3" type="y">
<text>cc</text>
<ref>a2</ref>
</elem>
<elem id="a4" type="x">
<text>dd</text>
<ref>a1</ref>
</elem>
Now i need in the output stream the following:
start with the text from all "w" types,
plot the text: for a special "w" type look for all "x" types
which reference
this "w" type
plot the text: for this "w" type again look for all "y"
types, which reference
either the given "w" type or any "x" type, which reference
this "w" type.
So in general this is the problem of transforming a tree
(with no circular
references) having references to another tree without references but
redundant tree nodes.
Can anybody help with some ideas ??
Thank you very much,
Peter Biechele
#####################################################
Dr. Peter Biechele, E-Mail: Peter(_dot_)Biechele(_at_)beXtec(_dot_)de
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list