RE: [xsl] Using "except" with node sequences

Subject: RE: [xsl] Using "except" with node sequences
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 4 Aug 2008 20:02:04 +0100
> Also, thanks Michael for your suggestion.  The code I posted 
> was a simplified form of my actual code, in which I'm 
> combining two sequences produced by two different functions, 
> both of which are a bit complex for a single predicate:
> 
> 	select="$active_data except $new_data"
> 
> Both of these variables are constructed by functions executed 
> on the original $normalized_data variable.  Both use 
> <xsl:sequence /> to return a sequence of elements.  My 
> impression was that by using <xsl:sequence />, I am returning 
> references to the existing nodes in $normalized_data, and not 
> actually creating copies of those nodes in memory.  Is this 
> in fact the case?

yes.
> 
> An alternate method I considered was to create Boolean 
> functions that would allow me to construct a predicate like 
> you suggested:
> 
> 	select="$normalized_data[fn:active(.) and not(fn:new(.)]
> 
> But since I use $active_data and $new_data elsewhere in my 
> stylesheet, I decided against it, trying to avoid evaluating 
> those Boolean functions more than necessary.  
> 
> In general, which approach is better practice?  

I would think the boolean function probably gives better reusability.

Michael Kay
http://www.saxonica.com/

Current Thread