Previous | Next | Indexes
Zvon > Tutorials > XSLT 2.0 Tutorial > Sequence Combinations (3/6) >

Selection of unique nodes

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