Share via


Vergleiche

Beim Vergleichen zweier Objekte in XPath werden diese mit dem =-Zeichen auf Übereinstimmung und mit dem != -Zeichen auf Ungleichheit überprüft.

Zum Durchführen eines Vergleichsvorgangs müssen genau zwei Operanden bereitgestellt werden. Vergleiche werden durchgeführt, indem alle Operanden ausgewertet und bei Bedarf so konvertiert werden, dass sie denselben Typ aufweisen. Dies wird nachfolgend entsprechend dem unter "Rangordnung für Vergleiche" beschriebenen Vorgang durchgeführt.

Alle Elemente und Attribute sind Zeichenfolgen, die jedoch automatisch in Ganzzahlwerte für numerische Vergleiche umgewandelt werden. Numerische Literalwerte werden während des Vergleichsvorgangs gemäß der folgenden Tabelle in die Typen long oder double umgewandelt.

Informationen zu < und anderen binären Vergleichsoperatoren finden Sie nachfolgend unter "Binäre Vergleichsoperatoren".

Literaltyp Vergleich Beispiel

String

text(lvalue) op text(rvalue)

a < GGG

Ganze Zahl

(long) lvalue op (long) rvalue

a < 3

Real

(double) lvalue op (double) rvalue

a < 3.1

Einfache oder doppelte Anführungszeichen können als Zeichenfolgen-Trennzeichen in Ausdrücken verwendet werden. Auf diese Weise wird das Erstellen und Übergeben von Mustern aus Skriptsprachen vereinfacht.

Weitere Informationen zum Durchführen von Vergleichen mithilfe von XPath finden Sie unter www.w3.org/TR/xpath in "XML Path Language (XPath) Version 1.0 (W3C Recommendation 16 November 1999)", Abschnitt 3.4 ("Booleans").

Beispiele

Ausdruck Bezieht sich auf

author[last-name = "Bob"]

Alle <author>-Elemente, die mindestens ein <last-name>-Element mit dem Wert Bob enthalten.

author[last-name[1] = "Bob"]

Alle <author>-Elemente, deren erstes untergeordnetes <last-name>-Element den Wert Bob aufweist.

author/degree[@from != "Harvard"]

Alle <author>-Elemente, die <degree>-Elemente mit einem from-Attribut enthalten, das nicht gleich "Harvard" ist.

author[last-name = /editor/last-name]

Alle <author>-Elemente, die ein <last-name>-Element enthalten, das mit dem <last-name>-Element im <editor>-Element unter dem Stammelement identisch ist.

author[. = "Matthew Bob"]

Alle <author>-Elemente, deren Zeichenfolgenwert Matthew Bob ist.

Rangordnung für Vergleiche

Vergleiche in Bezug auf Datentypen unterliegen der Rangordnung.

  • Wenn mindestens einer der Operanden ein boolescher Wert ist, wird jeder Operand zunächst in einen booleschen Wert konvertiert.

  • Wenn mindestens einer der Operanden eine Zahl ist, wird jeder Operand zunächst in eine Zahl konvertiert.

  • Wenn mindestens einer der Operanden ein Datum ist, wird jeder Operand zunächst in ein Datum konvertiert.

  • Andernfalls werden beide Operanden zunächst in Zeichenfolgen konvertiert.

Binäre Vergleichsoperatoren

Ein Satz binärer Vergleichsoperatoren, die Zahlen vergleichen und boolesche Werte als Ergebnis zurückgeben. Die Operatoren &lt;, &lt;=, &gt; und &gt;= werden jeweils für "kleiner als", "kleiner als oder gleich", "größer als" und "größer als oder gleich" verwendet. Einfache oder doppelte Fragezeichen können für Zeichenfolgen-Trennzeichen in Ausdrücken verwendet werden. Auf diese Weise wird das Erstellen und Übergeben von Mustern in Skriptsprachen vereinfacht.

Beachten Sie, dass diese Vergleichsoperatoren nur mit Zahlen verwendet werden können. Sie können Zeichenfolgen auf Gleichheit überprüfen. Zum Vergleichen von Zeichenfolgen für die Ermittlung der Sortierreihenfolge sollten jedoch Microsoft XPath-Erweiterungsfunktionen verwendet werden.

Beispiele

Ausdruck Bezieht sich auf

author[last-name = "Bob" and price &gt; 50]

Alle <author>-Elemente, die ein <last-name>-Element mit dem Wert Bob und ein <price>-Element mit einem Wert größer als 50 enthalten.

degree[@from != "Harvard"]

Alle <degree> -Elemente mit einem from-Attribut, das nicht gleich "Harvard" ist.

book[position() &lt;= 3]

Die ersten drei <book>-Elemente (1, 2, 3) in der XML-Datei.

Beispiel

XML-Datei (test.xml)

XSLT-Datei (test.xsl)

Im folgenden XSLT-Stylesheet werden alle <x>-Elemente ausgewählt, die in der Dokumentreihenfolge das erste unter den ihnen nebengeordneten Elementen sind.

Formatierte Ausgabe

Die oben auf die XML-Datei angewendete Transformation führt zu folgendem Ergebnis:

<x a="1">
  <x a="2" b="B">
     <x>
        <y>y31</y>
        <y>y32</y>
     </x>
   </x>
</x>
<x a="2" b="B">
   <x>
      <y>y31</y>
      <y>y32</y>
   </x>
</x>
<x>
   <y>y31</y>
   <y>y32</y>
</x>

Siehe auch

Verweis

XPath-Beispiele

Konzepte

XML-Beispieldatei für XPath-Syntax (inventory.xml)