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

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

 Subject: Re: [xsl] Function for determining one XPath as subset of another From: "David Carlisle d.p.carlisle@xxxxxxxxx" Date: Tue, 26 Jan 2016 16:54:10 -0000

```On 26 January 2016 at 16:15, Adam Retter adam.retter@xxxxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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
>
> 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.
>
> --
>

I suspect it's not possible unless you restrict the paths so much that it
is easy.
In the early xslt discussions there were proposals to have some more exotic
determination of match priority but they were abandoned essentially as this

1. //w

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

if y is a place holder for an xpath expression rather that just literally
matching the element y then
it isn't always a subset, consider

/x/doc('y.xml')/z/w[@a = 'v']

conversely

/x/y/z/w[@a = 'v'] and /x/y[1+1=2]/z/w[@a][upper-case(@a)= 'V']

do select the same sets but to know that you have to be able to prove that
arbitrarily complicated xpath boolean expressions are true which isn't
likely to be possible.

David

```