xsl-list
[Top] [All Lists]

Re: [xsl] Using "except" where some nodes are copies (not the original)?

2011-12-29 03:57:23
replace ($X except $Y) by

$X[not(some $y in $Y satisfies deep-equal(., $y))]

It's likely to be an expensive operation.

Michael Kay
Saxonica


On 28/12/2011 23:17, Costello, Roger L. wrote:
Hi Folks,

How do I do set subtraction where some of the nodes in the two sets may be 
copies (not originals)?

Please allow me to explain.

Consider this XML document:

<Test>
     <A/>
     <B/>
     <C/>
</Test>

Set<Test>  as the context node.

This operation:

     (A, B,, C) except (B, C)

returns:

     (A)

Nice.

Now, make a copy of B and store it into a variable:

       <xsl:variable name="B" as="element(B)">
                 <xsl:copy-of select="B" />
        </xsl:variable>

Run the same operation, but using the variable:

     (A, B, C) except ($B, C)

Returns:

     (A, B)

Ouch!

  I don't want that behavior. I want:

     (A, B, C) except ($B, C)

to return:

     (A)

How do I achieve the behavior I desire?

That is, how do I do set subtraction where some of the nodes in the two sets 
may be copies?

/Roger


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>