xsl-list
[Top] [All Lists]

Re: [xsl] How to efficently determine if a nodes exists with an attribute value other than those in a list

2007-08-07 10:04:18
On 8/7/07, David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:

<xsl:variable name="tcheck"><xsl:sequence
select="'x',y','z'"/></xsl:variable>

xsl:variable with no as or select attribute always creates a document
node, so here $tcheck is a document node with a child text node with
string value 'x y z'
what you want is


<xsl:variable name="tcheck" select="'x',y','z'"/>


which gives you a sequence of strings,


Still getting used to XSLT 2, that makes sense...

but then

@type except $tcheck

except is set difference, using _node identity_
as the test. As you had it  it's the same as @type as
it is the sequece 9of 1) type attribute nodes, minus the document node
in $tcheck.

Once $tcheck is a sequence of strings you'd get a type error as execpt
needs node sequences.

doc/*[(not(@type=$tcheck))]

is your friend (or not depending on whether a node not having a type
attribute at all is a possibility, and what you want in that case)


This however is a little less intuitive.  Checking an attribute
against a sequence for equality seems a little suprising, I'd expect
an "in" operator or some such thing (let me guess, XSLT 1.0
compatability?), but it appears to work so all is good.

Thanks


-- 
Peter Hunsberger

--~------------------------------------------------------------------
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>
--~--