Subject: Re: [xsl] Re: Re: Re: Sibling in the Pattern(match) From: Dongling Ding <dling61@xxxxxxxxx> Date: Tue, 25 Nov 2003 09:57:39 -0800 (PST) |
Thanks a lot Dimitre, But because the member with "acc11" can exist in more than one places in the source file. That is the reason I wanted to use the full path to indicate that particular member. However, "Member[@name ='acc1']/Member[@name='acc11']]" seems not okay in the match. It only recognized the "Member[@name='acc1'], not the full path. Here is the example code I modified. So, here there are two members with "acc11". One is the child of member with "acc1"; another is the child of member with "acc3". I only want to process nothing with the first one, but keep others same. Maybe this is the restriction on the "predicates". Thanks Dongling <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> --- Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote: > > The following template can act like a filter since > it > > does nothing. The attribute "match" here indicate > what > > needs to be filtered out from the output. > > > > <xsl:template > match="*[preceding-sibling::Member[@name > > ='acc1']/Member[@name='acc11']]"/> > > > > > > Here I wanted to remove(filter out) the element > > Member(name attribute is "acc12") and its children > > from the output. It is the sibling of the element > > Member(name attribute is "acc11"). > > > Use: > > <xsl:template > match="*[preceding-sibling::Member > [@name='acc11'] > ]"/> > > This removes any element that is a following-sibling > of a "Member" element > whose "name" attribute's value is "acc11". > > In the case of the source xml provided by you, the > element removed will be a > "Member" element with "acc12" as the value of its > "name" attribute. > > All the children of this removed element will also > be removed, because they > are not processed at all. > > So, given this source.xml: > > <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="acc32"> > <Calc>+</Calc> > </Member> > </Member> > </D> > > When we apply this transformation on it: > > <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="*[preceding-sibling::Member > [@name='acc11'] > ]"/> > > </xsl:stylesheet> > > the wanted result is produced: > > <D> > <Member comment="" name="acc1"> > <Calc>+</Calc> > <Member comment="" name="acc11"> > <Calc>+</Calc> > <Member name="account3_1"></Member> > </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="acc32"> > <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 > ve: http://www.mulberrytech.com/xsl/xsl-list > __________________________________ Do you Yahoo!? Free Pop-Up Blocker - Get it now http://companion.yahoo.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: Re: Re: Sibling in the Pa, Dimitre Novatchev | Thread | [xsl] Re: Re: Re: Re: Sibling in th, Dimitre Novatchev |
RE: [xsl] Replacing portion of elem, Wendell Piez | Date | [xsl] Recursive walk up tree, dinesh |
Month |