Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |
|---|---|
|
Logisches and |
|
Logisches or |
|
Negation |
|
Übereinstimmung |
|
Ungleich |
|
Kleiner als |
|
Kleiner als oder gleich |
|
Größer als |
|
Größer als 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 |
|
Gruppierung |
2 |
|
Filter |
3 |
|
Path-Vorgänge |
4 |
|
Vergleiche |
5 |
|
Vergleiche |
6 |
|
Union |
7 |
|
Boolesches not |
8 |
|
Boolesches and |
9 |
|
Boolesches or |
Wenn die Operatoren in einem XML-Dokument verwendet werden, z. B. in einem XSLT-Stylesheet, müssen der <-Token und der >-Token entsprechend mit einem Escapezeichen < und > 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 <= 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 >= 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 mit Gruppierungsklammern verwendet werden, um komplexe logische Ausdrücke zu verwenden.
Beispiele
| Ausdruck | Bezieht sich auf |
|---|---|
|
Alle |
|
Alle |
Boolesches not
Der boolesche not-Operator negiert den Wert eines Ausdrucks in einem Filtermuster.
Beispiele
| Ausdruck | Bezieht sich auf |
|---|---|
|
Alle |
author[not(degree or award) and publication] |
Alle |
Beispiel
XML-Datei (test.xml)
<?xml version="1.0"?>
<test>
<x a="1">
<x a="2" b="B">
<x>
<y>y31</y>
<y>y32</y>
</x>
</x>
</x>
<x a="2">
<y>y2</y>
</x>
<x a="3">
<y>y3</y>
</x>
</test>
XSLT-Datei (test.xsl)
Im folgenden XSLT-Stylesheet sind alle <x>-Elemente ohne Attribute ausgewählt.
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- suppress text nodes not covered in subsequent template rule -->
<xsl:template match="text()"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="*|@*"/>
<xsl:if test="text()">
<xsl:value-of select="."/>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="/test">
<xsl:apply-templates select="//x[not(@*)] "/>
</xsl:template>
</xsl:stylesheet>
Ausgabe
Die auf die XML-Datei angewendete Transformation führt zu folgendem Ergebnis:
<x>
<y>y31</y>
<y>y32</y>
</x>