[xquery-talk] Function for determining one XPath as subset of another
Ghislain Fourny
g at 28.io
Thu Jan 28 05:44:47 PST 2016
Hi Adam,
This may sound stupid, but: have you considered that (and would it be
relevant to you that) the second expression may raise errors that the first
one wouldn't have raised, rather than returning a subset?
Consider the case where b has a numeric type, and the attribute a cannot be
cast to double?
Kind regards,
Ghislain
On Thu, Jan 28, 2016 at 2:17 PM, Pavel Velikhov <pavel.velikhov at gmail.com>
wrote:
> No, the first line in the base case should also return false, sorry
>
> >
> >
> > So suppose you have 2 path expressions, p1 and p2, and you allow only /x
> or //x as path steps
> > and each path step can have a predicate:
> >
> > p1 = axis_1 pred_1, …, axis_n pred_n
> > p2 = axis_1 pred_1, … , axis_m pred_m
> >
> > subsumes(p1, p2):
> > /* recursion base case */
> > if p1 is empty: return true
> > if p2 is empty: return false
> >
> > a_1 = first axis of p1
> > a_2 = first axis of p2
> >
> > if a_1 is a child axis ‘/‘ label l :
> > if a_2 is a child axis ‘/' with the same label l, and the predicates
> are equivalent:
> > return subsumes(p1 - a_1, p2 - a_2)
> > else:
> > return false
> >
> > if a_1 is a descendants axis ‘//‘ with label l:
> > if p2 contains an axis with label l:
> > p2’ = remove all axes of p2 from the head, until you find an axis
> with label l
> > p2’ = remove the axis with label l from p2'
> > return subsumes( p_1 - a_1, p2’ )
> >
> > return false
>
>
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://x-query.com/pipermail/talk/attachments/20160128/e5347932/attachment.html>
More information about the talk
mailing list