|
Subject: [xsl] Re: : Sibling in the Pattern(match) From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Wed, 26 Nov 2003 07:39:23 +0100 |
I wrote (forgetting for a moment that we were speaking about a match
pattern, which does not allow the preceding-sibling axis) :
>
> To match the preceding siblings of a Member element with name="acc11",
which
> is a child of a Member with name='acc1' use:
>
> Member[@name = 'acc1']/Member[@name='acc11']/preceding-sibling::Member
Within a match pattern one would write:
Member[@name = 'acc1']/Member[following-sibling::Member[@name='acc11']]
So, this transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"Member[@name = 'acc1']
/
Member[following-sibling::Member[@name='acc11']]"/>
</xsl:stylesheet>
when applied on this source.xml:
<D>
<Member comment="" name="acc1">
<Calc>+</Calc>
<Member comment="" name="acc101">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc1021">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc11">
<Calc>+</Calc>
<Member name="account3_1"/>
</Member>
<Member comment="" name="acc12">
<Calc>+</Calc>
<Member name="acc121"/>
</Member>
</Member>
<Member comment="" name="acc2">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc3">
<Calc>+</Calc>
<Member comment="" name="acc31">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc11">
<Calc>+</Calc>
</Member>
</Member>
</D>
produces the wanted result, in which all preceding siblings of the "Member"
with name="acc11" (which is a child of the Member with name="acc1") are
removed :
<D>
<Member comment="" name="acc1">
<Calc>+</Calc>
<Member comment="" name="acc11">
<Calc>+</Calc>
<Member name="account3_1"/>
</Member>
<Member comment="" name="acc12">
<Calc>+</Calc>
<Member name="acc121"/>
</Member>
</Member>
<Member comment="" name="acc2">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc3">
<Calc>+</Calc>
<Member comment="" name="acc31">
<Calc>+</Calc>
</Member>
<Member comment="" name="acc11">
<Calc>+</Calc>
</Member>
</Member>
</D>
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Re: : Sibling in the Pattern(, Dimitre Novatchev | Thread | Re: [xsl] Re: : Sibling in the Patt, Dongling Ding |
| [xsl] Re: : Sibling in the Pattern(, Dimitre Novatchev | Date | RE: [xsl] Getting unique nodes filt, Jarno . Elovirta |
| Month |