It works for me (I get <data id="3"> only).
Stylesheet:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="normalized_data" as="element()+">
<data id="1">
<info action="delete" />
<info action="insert" />
<stuff />
</data>
<data id="2">
<info action="insert" />
<stuff />
</data>
<data id="3">
<stuff />
</data>
</xsl:variable>
<olddata>
<xsl:sequence select="$normalized_data[not(info/@action='delete')]
except
$normalized_data[info/@action='insert' or
info/@action='modify']" />
</olddata>
</xsl:template>
</xsl:stylesheet>
Result with Saxon 9.1 (any source document):
<olddata><data id="3"><stuff/></data></olddata>
Though I wouldn't have written the code this way; I would write
$normalized_data[condition1 and not(condition2)]
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: James Sulak [mailto:jsulak(_at_)jonesmcclure(_dot_)com]
Sent: 04 August 2008 18:39
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Using "except" with node sequences
Hello all,
I have a sequence of nodes stored in a variable, and I am
attempting to filter it using an XPath expression that
includes the "except" operator. However, it's not working
like I expect it to.
For a node sequence called $normalized_data:
<data id="1">
<info action="delete" />
<info action="insert" />
<stuff />
</data>
<data id="2">
<info action="insert" />
<stuff />
</data>
<data id="3">
<stuff />
</data>
I am attempting to filter it using this logic:
<olddata>
<xsl:sequence
select="$normalized_data[not(info/@action='delete')] except
$normalized_data[info/@action='insert' or
info/@action='modify']" /> </olddata>
I expect the returned sequence to include all of the nodes in
$normalized_data that match the first condition and don't
match the second condition (node 3). What I am actually
getting is all of the nodes in $normalized data. Is there
something about the "except" operator that I'm not understanding?
Thanks,
-James
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--