[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] following-sibling question


Subject: RE: [xsl] following-sibling question
From: "Ken Tam" <kentam@xxxxxxxxxxxxxxx>
Date: Tue, 25 Dec 2007 12:55:07 -0800

Thanks for the reply but it doesn't work as the first sample data is still
selected. I was able to use the generate-id() function to apply the filter for
the not(@id='d') case.

-----Original Message-----
From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx]
Sent: Saturday, December 22, 2007 1:51 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] following-sibling question


Please try this

/items/item[(@id='a') or (@id='c') or (@id='f') or
(preceding-sibling::item[@id='a'] and
following-sibling::item[@id='c'] and not(@id='d'))]

(not tested)

On Dec 22, 2007 11:18 AM, Ken Tam <kentam@xxxxxxxxxxxxxxx> wrote:
> Hi all,
>
> I have the following XML sample data:
>
> <items>
>   <item id="a"/>
>   <item id="b"/>
>   <item id="c"/>
>   <item id="d"/>
>   <item id="e"/>
>   <item id="f"/>
> </items>
>
> and a search requirement to select nodes starting with id="a" passing
id="c"
> with anything in between and ending in "f" but must not pass through "d".
> Thus, the above sample is not a match. Here is a sample that is a match:
>
> <items>
>   <item id="a"/>
>   <item id="b"/>
>   <item id="b"/>
>   <item id="e"/>
>   <item id="c"/>
>   <item id="e"/>
>   <item id="f"/>
> </items>
>
> I am not sure how to write the XPATH expression to filter on the "must not
> pass through "d" requirement. For example,
>
>
/items/item[@id="a"]/following-sibling::item[@id="c"]/following-sibling::ite
> m[@id != "d"]/following-sibling::item[@id="f"]
>
> doesn't work as "e" is picked up.
>
> Thanks,
> Ken


--
Regards,
Mukul Gandhi


Current Thread
Keywords