xsl-list
[Top] [All Lists]

Re: [xsl] Function for determining one XPath as subset of another

2016-01-27 03:03:21

On 26 Jan 2016, at 19:29, Wolfgang Laun 
wolfgang(_dot_)laun(_at_)gmail(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

If you can't prove it: claim it is an axiom ;-)

That's exactly what the XQuery formal semantics does, as it happens.

For the record, the actual theorem is: for any nodeTest T, the expressions

preceding::T

and

ancestor-or-self::*/preceding-sibling::node()/descendant-or-self::T

are equivalent; that is, for any context node, the two expressions deliver the 
same sequence of nodes as the result.

Michael Kay
Saxonica

-W

On 26 January 2016 at 20:24, Michael Kay mike(_at_)saxonica(_dot_)com 
<mailto:mike(_at_)saxonica(_dot_)com> 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com 
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> wrote:
I've always been a little frustrated that I rely heavily on equivalences like

preceding::x === 
ancestor-or-self::*/preceding-sibling::*/descendant-or-self::*

without having what I would consider a formal proof.

Michael Kay
Saxonica


On 26 Jan 2016, at 16:15, Adam Retter 
adam(_dot_)retter(_at_)googlemail(_dot_)com 
<mailto:adam(_dot_)retter(_at_)googlemail(_dot_)com> 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com 
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> wrote:

Given two simple XPaths, say:

1. //w

2. /x/y/z/w[@a = 'v']

As a human I can very easily tell without evaluating the expressions
that (2) will return a subset (or the same set) of the results that
(1) would return *should* they both be evaluated.

My goal here is given any two simple arbitrary XPaths expressed as
strings, and without evaluating them against a context, to determine
whether one would return a subset of the results of the other.

I wondered if there might be an algorithm or library that someone
already had or has written which might be able to give me the answer?

I realise that I can only probably cover a subset of XPath itself, but
it is only the path steps with predicates which I am interested in.

Ideally I am looking for something in Java.

--
Adam Retter

skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk <http://www.adamretter.org.uk/>



XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <-list/293509> (by email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>