Subject: Re: [xsl] Function for determining one XPath as subset of another From: "David Carlisle d.p.carlisle@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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 > 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 > 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 question couldn't be answered. even given your easy example 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Function for determining one , Adam Retter adam.ret | Thread | Re: [xsl] Function for determining , Adam Retter adam.ret |
[xsl] Function for determining one , Adam Retter adam.ret | Date | Re: [xsl] Function for determining , Dimitre Novatchev dn |
Month |