Subject: RE: [xpath] all following sibling nodes upto first occurace of specific text value
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 11 Aug 2005 23:59:32 +0100
|
In general in XPath if you want to find all nodes on an axis up to the first
one that satisfies condition X, the approach is:
following-sibling::node() except
following-sibling::node()[X][1]/following-sibling::node()
The except operator is in XPath 2.0 but not in XPath 1.0. In XPath 1.0, to
write "A except B", you code it as
A[count(.|B)!=count(B)]
You can expect the performance of the resulting expression to be fairly
awful; a recursive solution at the XSLT level that steps along the axis
until it finds a node satisfying X is likely to be much more efficient.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: geoff hopkins [mailto:geoffhopkins123@xxxxxxxxx]
> Sent: 11 August 2005 13:34
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xpath] all following sibling nodes upto first
> occurace of specific text value
>
> I understand this is a xslt forum but there does not
> seem to be any decent xpath places...
>
> I need a xpath expression to be used with a for-each
> loop... context node is X.Parent select the next
> items
> until it finds the next occurance of X.Parent or
> END-OF-DATA as the text value of the node
>
> e.g. the following xml is a typical xml file
>
> <?xml version="1.0" encoding="utf-8"?>
> <root>
> <node>X.Parent</node>
> <node>Y.Child</node>
> <node>Y.Child</node>
> <node>X.Parent</node>
> <node>Y.Child</node>
> <node>END-OF-DATA</node>
> </root>
>
> Thanks...
>
> Geoff
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
|