Freigeben über


Boolesche Ausdrücke, Vergleichsausdrücke und Set-Ausdrücke

In Filtermustern können boolesche Ausdrücke, Vergleichsausdrücke und Set-Ausdrücke enthalten sein. Die in der folgenden Tabelle aufgeführten Verknüpfungen stellen die in dieser XSLT-Implementierung (XSL Transformation) bereitgestellten alternativen Symbole dar. In dieser Dokumentation werden die Ausdrucksoperatoren behandelt.

Operator Beschreibung

and

Logisches "and"

or

Logisches "or"

not()

Negation

=

Gleichheit

!=

Ungleich

< *

Kleiner als

<= *

Kleiner oder gleich

> *

Größer als

<= *

Größer oder gleich

|

Set-Vorgang; gibt die Union zweier Knotengruppen zurück

* Erweiterte XPath-Methode

In der W3C-Syntax (World Wide Web Consortium) für Operatorschlüsselwörter werden Leerräume und andere Trennzeichen anstelle des in Version 2.5 verwendeten Dollarzeichens ($) verwendet. In der W3C-Syntax kann ein binary-Schlüsselwort mit dem Format $xxx$ als wsxxxws ausgedrückt werden, wobei ws sich auf einen Tokenterminator bezieht, der Leerraum, einfache Anführungszeichen (') oder doppelte Anführungszeichen (") darstellen kann. Unäre Operatoren, z. B. not(), verwenden eine funktionale Notation. Obwohl die Microsoft-Implementierung beide Syntaxformen unterstützt, empfiehlt es sich, für die Kompatibilität mit zukünftigen Versionen die W3C-Syntax zu verwenden.

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

Rangfolge Operatoren Beschreibung

1

( )

Gruppieren

2

[ ]

Filter

3

/

//

Path-Vorgänge

4

< oder &lt;

<= oder &lt;=

> oder &gt;

>= oder &gt;=

Vergleiche

5

=

!=

Vergleiche

6

|

Union

7

not()

Boolesches "not"

8

And

Boolesches "and"

9

Or

Boolesches "or"

Wenn die Operatoren in einem XML-Dokument verwendet werden, z. B. in einem XSLT-Stylesheet, müssen das <-Token und das >-Token jeweils mit dem entsprechenden Escapezeichen &lt; bzw. &gt; versehen werden. In der folgenden XSLT-Anweisung wird beispielsweise eine XSLT-Vorlagenregel für alle <book>-Elemente aufgerufen, deren <price>-Element einen numerischen Wert kleiner gleich 10 aufweist.

<xsl:apply-templates select="book[price &lt;= 10]"/>

Wenn ein XPath-Ausdruck mit DOM verwendet wird, müssen die Operatoren < und > nicht mit Ecapezeichen versehen werden. In der folgenden JScript-Anweisung werden beispielsweise alle <book>-Elemente ausgewählt, deren <price>-Element über einen numerischen Wert verfügt, der kleiner gleich 10 ist.

var cheap_books = dom.selectNodes("book[price <= 10]");

Boolesche Ausdrücke können mit allen Knoten eines bestimmten Werts oder mit allen Knoten, die in bestimmten Bereichen über Knoten verfügen, übereinstimmen. Im Folgenden ist ein Beispiel für einen booleschen Ausdruck dargestellt, der false zurückgibt.

1 &gt;= 2

Bei Operatoren muss die Groß- und Kleinschreibung berücksichtigt werden.

Logisches and und logisches or

Mit den booleschen Operatoren and und or werden logische and- oder logische or-Vorgänge ausgeführt. Diese Operatoren können zusammen mit Gruppierungsklammern verwendet werden, um komplexe logische Ausdrücke zu erstellen.

Beispiele

Ausdruck Bezieht sich auf

author[degree and award]

Alle <author>-Elemente mit mindestens einem <degree>-Element und mindestens einem <award>-Element.

author[(degree or award) and publication]

Alle <author>-Elemente mit mindestens einem <degree>-Element oder <award>-Element und mindestens einem <publication>-Element.

Boolesches "not"

Der boolesche not-Operator negiert den Wert eines Ausdrucks in einem Filtermuster.

Beispiele

Ausdruck Bezieht sich auf

author[degree and not(publication)]

Alle <author>-Elemente mit mindestens einem <degree>-Element, jedoch ohne <publication>-Elemente.

author[not(degree or award) and publication]

Alle <author>-Elemente mit mindestens einem <publication>-Element, jedoch ohne <degree>-Elemente oder <award>-Elemente.

Beispiel

XML-Datei (test.xml)

XSLT-Datei (test.xsl)

Im folgenden XSLT-Stylesheet sind alle <x>-Elemente ohne Attribute ausgewählt.

Ausgabe

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