Today I Learned: Mengenoperatoren in XPath 2.0
David Maus, 23. Okt 2017
XPath 2.0 führt die Operatoren
union
,
intersect
und
except
ein, mit denen die Vereinungs-, Schnitt- bzw. Differenzmenge berechnet werden
können. Diese Operatoren gelten aber nur für Knotenmengen.
Für den Vergleich von Mengen atomischer Werte (Zeichenketten usw.) listet Kay 2008, S. 631 die entsprechenden Äquivalente.
Vereinigungsmenge |
distinct-values($A, $B) |
---|---|
Schnittmenge |
distinct-values($A[. = $B]) |
Differenzmenge |
distinct-values($A[not(. = $B)]) |
Kay 2008 (ebd.) führt auch die in XPath 1.0 möglichen Ausdrücke auf, um die Schnitt- bzw. Differenzmenge von Knotenmengen zu berechnen.
Schnittmenge |
$A[count(. | $B) = count($B)] |
Lies: Alle Elemente von $A für die gilt, dass die Vereinigungsmenge des Elements mit der Menge $B die selbe Anzahl an Knoten enthält wie die Menge $B; das Element also in $B enthalten ist. |
---|---|---|
Differenzmenge |
$A[count(. | $B) != count($B)] |
Literatur
Kay, Michael. XSLT 2.0 and XPath 2.0, 4th Edition. Indianapolis, IN: Wiley Publishing, 2008.