This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Finding corresponding node in structurally identical sibling tree?
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 26 Apr 2002 11:21:23 +0100
- Subject: RE: [xsl] Finding corresponding node in structurally identical sibling tree?
- Reply-to: xsl-list at lists dot mulberrytech dot com
> I need to quickly find the matching node to the current node
> which is in a parallel branch with identical structure to the
> branch I'm operating in. It seems like this should be really
> simple, but the only solution I can come up with is
> a recursive template to assemble the name of the path from
> the branch tag down, and then compare that against the result
> from the same template for each node in the second tree. The
> trees may be of arbitrary depth. Any other ideas?
Depends what you mean by "quickly", but you could try:
<xsl:variable name="branch1index"
select="count(/example/branch1/preceding::node())"/>
<xsl:variable name="thisindex" select="count(preceding::node())"/>
select="/example/branch2/descendant::node[$thisindex - $branch1index]"
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
>
> <example>
> <branch1>
> <somestuff>
> <somedeeperstuff>
> <someevendeeperstuff/> <--- Current node
> </somedeeperstuff>
> </somestuff>
> </branch1>
> <branch2>
> <somestuff>
> <somedeeperstuff>
> <someevendeeperstuff/> <--- Corresponding node I
> want to find
> </somedeeperstuff>
> </somestuff>
> </branch2>
> </example>
>
> The reason we are doing this is to be able to cache a form
> description in the first branch.
> Then any default values are placed in the second branch which
> means that we don't need to modify the
> cached document fragment.
>
> TIA
>
> Joel
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list