XPath 2.0-Operatorfunktionen
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
Bei den strikt formalen Operatorfunktionen von XPath 2.0, formal gekennzeichnet durch das Präfix op:, handelt es sich um Beschreibungen in Funktionsform, die den eigentlichen in XPath 1.0 und XPath 2.0 verwendeten Operatoren (Operatorsymbolen) als Definition hinterlegt sind.
Kein Namensraum für das Präfix op:
Das Präfix op: der Operatorfunktionen ist nicht an einen Namensraum gebunden (!), da diese nicht dafür vorgesehen sind, direkt vom Benutzer verwendet zu werden, sondern lediglich die Wirkungsweise der XPath-Operatoren in Bezug auf verschiedene Datentypen klarstellen sollen.
Es ist von den Spezifikationen ausdrücklich nicht gefordert, dass eine Anwendung die Funktionen in irgendeiner Form real zur Verfügung stellen muss.
Unterstützte Operatorsymbole
In der folgenden tabellarischen Übersicht sind diejenigen XPath-Operatoren aufgeführt, für die Operatorfunktionen existieren. Eine ausführliche Übersicht über die Operatorfunktionen selbst ist in diesem Rahmen nicht erforderlich.
Unäre Operatoren
Operator | Bezeichnung | Anwendungsbereich |
---|---|---|
+ | unäres Plus | Zahlen +numeric |
- | unäres Minus | Zahlen -numeric |
Tabelle: Übersicht über unäre Operatoren.
Binäre Operatoren
Operator | Bezeichnung | Anwendungsbereich |
---|---|---|
+ | Addition | Zahlen, Datumswerte numeric + numeric xs:date + xs:yearMonthDuration xs:date + xs:dayTimeDuration xs:time + xs:dayTimeDuration xs:datetime + xs:yearMonthDuration xs:datetime + xs:dayTimeDuration xs:yearMonthDuration + xs:yearMonthDuration xs:dayTimeDuration + xs:dayTimeDuration |
- | Subtraktion | Zahlen, Datumswerte numeric – numeric xs:date – xs:date xs:date – xs:yearMonthDuration xs:date – xs:dayTimeDuration xs:time – xs:time xs:time – xs:dayTimeDuration xs:datetime – xs:datetime xs:datetime – xs:yearMonthDuration xs:datetime – xs:dayTimeDuration xs:yearMonthDuration – xs:yearMonthDuration xs:dayTimeDuration – xs:dayTimeDuration |
* | Multiplikation | Zahlen, Datumswerte numeric * numeric xs:decimal * xs:yearMonthDuration xs:decimal * xs:dayTimeDuration |
div | Division | Zahlen, Datumswerte numeric div numeric xs:integer div xs:integer xs:yearMonthDuration xs:decimal xs:dayTimeDuration xs:decimal |
idiv | Int-Division | Ganzzahlen (Integer) xs:integer idiv xs:integer -> xs:integer |
to | Int-Bereich | Ganzzahlen (Integer) xs:integer to xs:integer -> xs:integer* |
mod | Modulo | Zahlen numeric mod numeric -> numeric |
eq | Gleichheit | Zahlen, boolesche Werte, Strings, Datumswerte, Binärwerte, URI-Strings, QNames, Notationen numeric eq numeric xs:boolean eq xs:boolean xs:string eq xs:string xs:date eq xs:date xs:time eq xs:time xs:dateTime eq xs:dateTime xs:yearMonthDuration eq xs:yearMonthDuration xs:dayTimeDuration eq xs:dayTimeDuration Gregorian eq Gregorian xs:hexBinary eq xs:hexBinary xs:base64Binary eq xs:base64Binary xs:anyURI eq xs:anyURI |
ne | Ungleichheit | Zahlen, boolesche Werte, Strings, Datumswerte, Binärwerte, URI-Strings, QNames, Notationen numeric ne numeric xs:boolean ne xs:boolean xs:string ne xs:string xs:date ne xs:date xs:time ne xs:time xs:dateTime ne xs:dateTime xs:yearMonthDuration ne xs:yearMonthDuration xs:dayTimeDuration ne xs:dayTimeDuration Gregorian ne Gregorian xs:hexBinary ne xs:hexBinary xs:base64Binary ne xs:base64Binary xs:anyURI ne xs:anyURI |
gt | größer als | Zahlen, boolesche Werte, Strings, Datumswerte numeric gt numeric xs:boolean gt xs:boolean xs:string gt xs:string xs:date gt xs:date xs:time gt xs:time xs:yearMonthDuration gt xs:yearMonthDuration xs:dayTimeDuration gt xs:dayTimeDuration |
lt | kleiner als | Zahlen, boolesche Werte, Strings, Datumswerte numeric lt numeric xs:boolean lt xs:boolean xs:string lt xs:string xs:date lt xs:date xs:time lt xs:time xs:yearMonthDuration lt xs:yearMonthDuration xs:dayTimeDuration lt xs:dayTimeDuration |
ge | größer gleich | Zahlen, boolesche Werte, Strings, Datumswerte numeric ge numeric xs:boolean ge xs:boolean xs:string ge xs:string xs:date ge xs:date xs:time ge xs:time xs:yearMonthDuration ge xs:yearMonthDuration xs:dayTimeDuration ge xs:dayTimeDuration |
le | kleiner gleich | Zahlen, boolesche Werte, Strings, Datumswerte numeric le numeric xs:boolean le xs:boolean xs:string le xs:string xs:date le xs:date xs:time le xs:time xs:yearMonthDuration le xs:yearMonthDuration xs:dayTimeDuration le xs:dayTimeDuration |
is | ist ein | Nodes node() is node() -> xs:boolean |
isnot | ist nicht ein | Nodes node() isnot node() -> xs:boolean |
except | Ausschluss | Nodes node()* except node()* -> node()* |
intersect | Schnittmenge | Nodes node()* intersect node()* -> node()* |
union | Vereinigung | Nodes node()* union node()* -> node()* |
| | Vereinigung | Nodes node()* | node()* -> node()* |
<< | voriger Knoten | Nodes node() << node() -> xs:boolean |
>> | folg. Knoten | Nodes node() >> node() -> xs:boolean |
, | Itemtrenner | Items (Sequenzen) |
Tabelle: Übersicht über binäre Operatoren.
Erläuterung anhand des +-Operators
Hinter dem +-Operator stehen mehrere Operatorfunktionen, die diesen – außer auf die üblichen numerischen Datentypen – intuitiv auch auf Datumswerte anwendbar machen. Die zuständige Operatorfunktion steht dabei lediglich als Definition des Verfahrens mit den jeweiligen Datentypen im Hintergrund.
Der Vollständigkeit halber ist eine Operatorfunktionen auch für die bereits in XPath 1.0 übliche numerische Anwendung des +-Operators deklariert. Hier drei Beispiele für Definitionen:
op:add-dayTimeDuration-to-date($srcval1 as xs:date,
$srcval2 as xs:dayTimeDuration)
as xs:date
op:add-dayTimeDuration-to-dateTime($srcval1 as xs:dateTime,
$srcval2 as xs:dayTimeDuration)
as xs:dateTime
op:numeric-add($operand1 as numeric,
$operand2 as numeric)
as numeric
Weiterhin sind auf den +-Operator noch Funktionen wie op:add-dayTimeDuration-to-time, op:add-dayTimeDurations, op:add-yearMonthDuration-to-date und op:add-yearMonthDuration-to-dateTime bezogen. Ähnliches gilt für die anderen Operatoren in der obigen Tabelle.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn