Share via


Set-Vorgänge

XPath (XML Path Language) unterstützt die Set-Operation |.

Union-Operator (|)

Der |- oder Union-Operator gibt die Union der zwei Operanden zurück, die Knotengruppen sein müssen. Beispielsweise gibt //author | //publisher eine Knotengruppe zurück, in der alle //author-Knoten und alle //publisher-Knoten kombiniert sind. Mehrere Union-Operatoren können verkettet werden, um mehrere Knotengruppen zu kombinieren. Beispielsweise gibt //author | //publisher | //editor | //book-seller eine Knotengruppe mit allen //author, //publisher, //editor und //book-seller elements zurück. Der union-Operator behält die Dokumentreihenfolge bei und gibt keine Duplikate zurück.

Beispiele

Ausdruck Bezieht sich auf

first-name | last-name

Eine Knotengruppe mit <first-name>-Elementen und <last-name>-Elementen im aktuellen Kontext.

(bookstore/book | bookstore/magazine)

Eine Knotengruppe mit <book>-Elementen und <magazine>-Elementen in einem <bookstore>-Element.

book | book/author

Eine Knotengruppe mit allen <book>-Elementen und allen <author>-Elementen in <book>-Elementen.

(book | magazine)/price

Die Knotengruppe mit allen <price>-Elementen von entweder <book>-Elementen oder <magazine>-Elementen.

Beispiel

Im folgenden Beispiel wird die Auswirkung des Union-Operators dargestellt.

XML-Datei (test.xml)

XSLT-Datei (test.xsl)

Im folgenden XSLT-Stylesheet werden alle <x>-Elemente ausgewählt, deren a-Attribut gleich 2 ist. Außerdem werden jene <x>-Elemente ausgewählt, die keine Attribute aufweisen.

Die Transformation führt zu folgendem Ergebnis:

Rangfolge

In der folgenden Tabelle ist die Rangfolge (von höchster zu niedrigster Priorität) zwischen booleschen Operatoren und Vergleichsoperatoren dargestellt.

Rangfolge Operatoren Beschreibung

1

( )

Gruppieren

2

[ ]

Filter

3

/

//

Path-Vorgänge

4

&lt;

&lt;=

&gt;

&gt;=

Vergleiche

5

=

!=

Vergleiche

6

|

Union

7

not()

Boolesches "not"

8

and

Boolesches "and"

9

or

Boolesches "or"

Beispiel

Im folgenden Beispiel wird die Auswirkung der oben aufgeführten Operatorenrangfolge dargestellt.

XML-Datei (test.xml)

Basic XSLT-Datei (test.xsl)

Diese Basic XSLT-Datei wird als Anfangspunkt für die folgende Reihe von Abbildungen verwendet.

Fall 0. Testlauf

Die folgende Vorlagenregel kann dem XSLT-Stylesheet hinzugefügt werden.

Dadurch wird ein mit dem ursprünglichen Dokument identisches XML-Dokument ohne <?xml version="1.0"?>-Verarbeitungsanweisungen erstellt.

In den folgenden Fällen werden die verschiedenen Möglichkeiten zum Schreiben dieser Vorlagenregel veranschaulicht. Es geht darum, die Reihenfolge darzustellen, in der XPath-Operatoren an ein Element gebunden werden.

Fall 1: () bindet stärker als []

In der folgenden Vorlagenregel wird das erste <y>-Element in der Dokumentreihenfolge aus allen <y>-Elementen im Quelldokument ausgewählt.

Daraus ergibt sich folgendes Ergebnis:

<y>y31</y>

Fall 2: [] bindet stärker als / oder //

In der folgenden Vorlagenregel werden alle <y>-Elemente ausgewählt, die das jeweils erste Element unter den nebengeordneten Elementen darstellen.

Das Ergebnis sieht so aus:

<y>y31</y>

<y>y21</y>

<y>y11</y>

<y>y03</y>

Fall 3: and, not

In der folgenden Vorlagenregel werden alle <x>-Elemente ausgewählt, die keine untergeordneten <x>-Elemente aufweisen, die über ein übergeordnetes <x>-Element verfügen und die keine Attribute besitzen.

Das Ergebnis ist ein einzelnes <x>-Element, das unten mit den dazugehörigen untergeordneten Elementen aufgeführt ist.

<x>
   <y>y31</y>
   <y>y32</y>
</x>

Fall 4: or, and, not

In der folgenden Vorlagenregel wird jedes <x>-Element ausgewählt, das das untergeordnete Element eines <x>-Elements oder nicht das übergeordnete Element eines <x>-Elements darstellt und keine Attribute aufweist.

Daraus ergibt sich eine Knotengruppe mit folgenden <x>-Elementen, die unten mit den dazugehörigen untergeordneten Elementen aufgeführt sind.

Fall 5: and, or, not

In der folgenden Vorlagenregel wird jedes <x>-Element ausgewählt, das das untergeordnete Element eines <x>-Elements, jedoch kein übergeordnetes Element eines <x>-Elements darstellt oder über keine Attribute verfügt.

Daraus ergibt sich eine Knotengruppe mit folgenden <x>-Elementen, die unten mit den dazugehörigen untergeordneten Elementen aufgeführt sind.