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