Re: [xsl] Need an XPath expression for: $B is not contained in $A

Subject: Re: [xsl] Need an XPath expression for: $B is not contained in $A
From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Jun 2018 00:11:41 -0000
Dimitre,

I like it (if it's efficiency we're after)!

Cheers, Wendell


On Thu, Jun 14, 2018 at 5:18 PM, Dimitre Novatchev
dnovatchev@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Hi Wendell,
>
>> "empty($A intersect $B//*)"
>
> I think that generally using the ancestor-or-self:: axis will be more
> efficient than using $B//*, because the depth of an XML document tends
> to be fairly limited in size.
>
> So:
>
>      ($B/ancestor-or-self::* intersect $A)[1]
>
> Cheers,
> Dimitre
>
> On Thu, Jun 14, 2018 at 1:34 PM, Wendell Piez wapiez@xxxxxxxxxxxxxxx
> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>
>> Hi,
>>
>> "not(some $b in ($B//*) satisfies ($b is $A))"
>>
>> (oh Roger came up with that.)
>>
>> or nicer?
>>
>> "empty($A intersect $B//*)"
>>
>> XPath 1.0:
>>
>> "count($B/**) = count($B//* | $A)"
>>
>> Cheers, Wendell
>>
>>
>>
>> On Thu, Jun 14, 2018 at 8:23 AM, Costello, Roger L. costello@xxxxxxxxx
>> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>> > Hi Folks,
>> >
>> > The variable $A contains an element.
>> >
>> > The variable $B contains an element.
>> >
>> > I need an XPath expression that determines if $B is not contained in $A.
>> >
>> > This XPath expression seems to work:
>> >
>> >     not(index-of($B/ancestor::*,$A))
>> >
>> > but that seems awful, i.e., not straightforward, convoluted, and probably inefficient.
>> >
>> > Is there a better (simpler, straightforward, efficient) XPath expression?
>> >
>> > /Roger
>> >
>>
>>
>>
>> --
>> Wendell Piez | http://www.wendellpiez.com
>> XML | XSLT | electronic publishing
>> Eat Your Vegetables
>> _____oo_________o_o___ooooo____ooooooo_^
>>
>
>
>
>
> --
> Cheers,
> Dimitre Novatchev
> ---------------------------------------
> Truly great madness cannot be achieved without significant intelligence.
> ---------------------------------------
> To invent, you need a good imagination and a pile of junk
> -------------------------------------
> Never fight an inanimate object
> -------------------------------------
> To avoid situations in which you might make mistakes may be the
> biggest mistake of all
> ------------------------------------
> Quality means doing it right when no one is looking.
> -------------------------------------
> You've achieved success in your field when you don't know whether what
> you're doing is work or play
> -------------------------------------
> To achieve the impossible dream, try going to sleep.
> -------------------------------------
> Facts do not cease to exist because they are ignored.
> -------------------------------------
> Typing monkeys will write all Shakespeare's works in 200yrs.Will they
> write all patents, too? :)
> -------------------------------------
> Sanity is madness put to good use.
> -------------------------------------
> I finally figured out the only reason to be alive is to enjoy it.
> 



-- 
Wendell Piez | http://www.wendellpiez.com
XML | XSLT | electronic publishing
Eat Your Vegetables
_____oo_________o_o___ooooo____ooooooo_^

Current Thread