XPath 2.0-Konstruktorfunktionen (Übersicht)

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)

Die Konstruktorfunktionen in XPath 2.0 dienen der Erstellung von typisierten Daten, entsprechend der in XML Schema definierten Typen. Hier zugrunde gelegt wurde die Working Draft zur Spezifikation XML Schema 1.1 Part 2: Datatypes vom 17. Februar 2006:

Die Konstruktoren sind mit dem Prä­fix xs versehen, das sich auf den XML Schema-Namensraum xmlns:xs="http://www.w3.org/2001/XMLSchema" bezieht.

Ein Konstruktor ähnelt von der Syntax her einem Funktionsaufruf. Er ist formal nach folgendem Prinzip aufgebaut:

prefix:ZIELTYP($srcval as xs:anyAtomicTypeas pref:ZIELTYP

wobei der Eingabewert $srcval (der in der Regel in Form eines XPath-Ausdrucks vor­liegen wird) hier verallgemeinert als xs:anyAtomicType angegeben ist. Dies bedeutet lediglich, dass der aus der Auswertung des XPath-Ausdrucks resultierende Übergabewert entweder bereits in atomarer oder aber in zumindest atomisierbarer Form vorlie­gen muss.

Der Übergabewert kann also unmittelbar ein String, eine Zahl, ein boolescher Wert sein oder durch Atomisierung eines Nodes zur Extraktion seines Wertes gewonnen werden. Schlägt diese Atomisierung fehl, so wird eine Fehlermel­dung ausgegeben.

Beispiele:

Konstruktor für den Typ xs:string:

xs:string($srcval as xs:anyAtomicType)
                      
as xs:string

Konstruktor für den Typ xs:yearMonthDuration:

xs:yearMonthDuration($srcval as xs:anyAtomicType)
                      
as xs:yearMonthDuration

Die Konstruktoren arbeiten mit impliziter Typumwandlung, wobei der Ein­gangswert – sofern er beispielsweise als String vorliegt – in seiner Form den lexikalischen Forderungen an den gewünschten Ergebnistyp entsprechen muss.

So sind die Ergebnisse folgender Konstruktoraufrufe identisch:

xs:Integer("15") und xs:Integer(15)

wobei der – atomare – Eingangswert im ersten Fall als String und im zweiten Fall als Zahl vorliegt. Beide Aufrufe geben gleichermaßen die Zahl 15 typisiert als xs:integer zurück.

Konstruktoren für XML Schema Datentypen

Konstruktoren existieren für alle in Folge aufgelisteten Datentypen. Sie geben einen beliebigen (atomaren oder atomisierbaren) Eingabewert in Form des gewünschten Datentyps zurück.

Keine Konstruktorfunktionen existieren für die allgemeinen, aus formalen Gründen existierenden Basistypen xs:anyType und xs:anySimpleType, sowie für den allgemeinen, ursprünglich aus XPath 2.0 stammenden Daten­typ xs:anyAtomicType.

Für die Typen xs:ENTITIES, xs:NMTOKENS und xs:IDREFS existieren ebenfalls keine eigenen Konstruktorfunktionen. Hier muss gegebenenfalls auf die jeweiligen Einzelkonstruktoren für xs:ENTITY, xs:NMTOKEN und xs:IDREF zurückgegrif­fen werden.

Für die XML Schema-Datentypen xs:yearMonthDuration und xs:dayTime­Duration sowie xs:untypedAtomic existieren eigenständige Konstruktoren.

Anmerkung – keine xdt-Datentypen mehr!
Die drei ursprünglich innerhalb der Working Draft zur XPath 2.0-Spezifikation definierten Daten­typen xdt:yearMonthDura­tion, xdt:dayTimeDuration und xdt:untypedAtomic sind abgeschafft und durch die Schematypen xs:yearMonthDura­tion, xs:dayTimeDuration sowie den neuen Basistyp xs:untypedAtomic ersetzt. (Das Präfix xdt bezog sich auf den nun ebenfalls obsoleten Namensraum "http://www.w3.org/2003/11/xpath-datatypes".)

Konstruktoren für nutzerdefinierte Datentypen

Liegt ein XML Schema vor, in dem ein nutzerdefinierter, von einem primitiven Typ abgeleiteter Datentyp definiert wurde, so existiert automatisch auch eine entsprechende Konstruktorfunktion, die diesen Datentyp erzeugt. Die Kon­struktorfunktion besitzt in diesem Fall den gleichen Bezeichner und Namens­raum wie der zugehörige nutzerdefinierte Datentyp – in diesem Fall ein selbst­definierter Typ, der eine Katalognummer repräsentiert:

meine:katNummer($srcval as xs:anyAtomicType) 
            as meine:katNummer

   

<< 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