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 |
---|---|
|
Eine Knotengruppe mit |
|
Eine Knotengruppe mit |
|
Eine Knotengruppe mit allen |
|
Die Knotengruppe mit allen |
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 |
|
Vergleiche |
5 |
|
Vergleiche |
6 |
|
Union |
7 |
|
Boolesches "not" |
8 |
|
Boolesches "and" |
9 |
|
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.