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

Subject: [xsl] How to efficently determine if a nodes exists with an attribute value other than those in a list
From: "Peter Hunsberger" <peter.hunsberger@xxxxxxxxx>
Date: Tue, 7 Aug 2007 11:27:56 -0500
Suppose I have a document with a bunch of nodes each with a type
attribute, something like:

<doc>
    <a type="x"/>
    <b type="y"/>
    .
    .
    .
    <z type="42"/>
</doc>

Using an XSLT 2 stylesheet I'd like to efficently determine if there
are any nodes where the type attribute  value is not in a list of
given values.  I thought I might be able to do this with a sequence
and the except operator, but I haven't gotten it to work, the code
basically looks like:

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

<xsl:if test="doc/*[@type except $tcheck]">got one</xsl:if>

Which I suspect is attempting to check attributes against strings.
Using Saxon 8 I don't get an error, but I also don't get a "got one"
result.  Any suggestions?

-- 
Peter Hunsberger

Current Thread