Subject: Re: [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 12:03:55 -0500 |
On 8/7/07, David Carlisle <davidc@xxxxxxxxx> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to efficently determi, David Carlisle | Thread | Re: [xsl] How to efficently determi, David Carlisle |
Re: [xsl] How to efficently determi, David Carlisle | Date | [xsl] XSLT and natural semantics, Garvin Riensche |
Month |