Subject: Re: [xsl] except (was: Keys with duplicates should be simple) From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx> Date: Mon, 3 Feb 2014 10:15:32 -0500 |
Graydon, On Sun, Feb 2, 2014 at 10:28 PM, Graydon <graydon@xxxxxxxxx> wrote: > On Sun, Feb 02, 2014 at 10:48:35PM +0000, Michael Kay scripsit: >> You've somehow got it into your head that the context for evaluation >> of the rh operand depends on the lh operand. Like I said, you're >> thinking of it as a predicate. That's not the case. > > I think what's messing me up here is that (so far as I understand it) > the default case with a path expression > > /something/foo except bar > > is two sequences-used-to-simulate-node-sets -- (A,B), (B,A), and > (A,B,B,A) are treated as identical, and they're not identical sequences > --and both foo and bar are relative to the current context node in the > path case. > > So if it's div/* except heading > > that comes out to > > (div/child::*) except (div/child::heading) > > and that doesn't register as lh and rh operands being independent. So now I'm confused by your confusion. Wouldn't "div/* except heading" be more like "div/child::* except child::heading"? Whence cometh the 'div' step in the rh operand, as you render it? Because they are set operators (or are meant to behave as such), it's true that 'union', 'intersect' and 'except' have that extra semantics of removing duplicate appearances and reordering sequences of nodes. This is how (A,B), (B,A) and (A,B,B,A) come to be treated as identical when using these operators. But nothing about that makes the left-hand and the right-hand side of the operation any different. Unlike 'union' and 'intersect', 'except' is not commutative, but that's because the nodes returned are always from the left-hand side, not because the two sides are evaluated any differently. $a except $b $a[empty(. intersect $b)] > The good thing about being publicly confused is one subsequently > remembers, so hopefully the lh and rh independence will stick. Indeed. Cheers, Wendell -- Wendell Piez | http://www.wendellpiez.com XML | XSLT | electronic publishing Eat Your Vegetables _____oo_________o_o___ooooo____ooooooo_^
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] except, David Carlisle | Thread | Re: [xsl] except, David Carlisle |
Re: [xsl] except (was: Keys with du, Andrew Welch | Date | Re: [xsl] except (was: Keys with du, Ihe Onwuka |
Month |