The "except" operator takes two sequences of nodes as operands and returns a sequence containing all the nodes that occur in the first operand but not in the second operand.
Combination of "union" and "except" operator may be sometimes useful as demonstrated in the zzz example.
|
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/aaa"> <xxx> <xsl:value-of select="* except ccc"/> </xxx> <yyy> <xsl:value-of select="* except *[2]"/> </yyy> <zzz> <xsl:value-of select="* except (bbb|ccc)"/> </zzz> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa> <bbb>B1</bbb> <bbb>B2</bbb> <ccc>C1</ccc> <ccc>C2</ccc> <ddd>D1</ddd> </aaa> |
Output
<xxx>B1 B2 D1</xxx> <yyy>B1 C1 C2 D1</yyy> <zzz>D1</zzz> |
| Previous chapter: | Sequences |
| Next chapter: | Value-of |
| Previous page: | Intersection of nodes |
| Next page: | Nodes in the final sequences appear in document order |