fn:QName

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

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

   

Kategorie: Funktionen für QNames

Herkunft: XPath 2.0

Rückgabewert: Ein QName, dessen Namensraumpräfix dem überge­benen Namensraum zugeordnet ist.

Aufruf/Argumente:

fn:QName($ns-string?, $prefixed-name)

$ns-string:
Obligatorisch. Erstes Argument ist ein String xs:string, der den Namensraum-URI-String des Namensraumanteils des QNames darstellt. Der leere String bzw. die leere Sequenz ist als Wert zugelassen.

$prefixed-name:
Obligatorisch. Zweites Argument ist ein String xs:string, der den Bezeichner des QNames, gegebenenfalls mitsamt des zu verwendenden Präfix ergibt, der sich auf den Namensraum-URI des ersten Arguments bezieht. Der Wert muss lexikalisch daher den Anforderungen des Typs xs:QName entsprechen.

Verwendungszweck:

Die Funktion gibt einen QName xs:QName zurück, der den als zweites Argument übergebenen Bezeichner besitzt. Mittels der Funktion ist es also möglich, auch den Bezeichner des Präfixes festzulegen, den der QName besitzen soll.

Der Namensraum, der dem Präfix zugewiesen wird, ergibt sich aus dem Namensraum-URI, der als erstes Argument übergeben wurde. Wird als erstes Argument ein leerer String oder die leere Sequenz übergeben, so ist der erzeugte QName ausdrücklich im Null-Namensraum, d.h. auch nicht im Default-Namensraum.

Für das zweite Arguments muss die lexikale Form eines QName eingehalten werden. Sofern ein Namensraum-URI übergeben wird, der nicht Null ist, muss der Bezeichner obligatorisch einen Präfixanteil und einen lokalen Bezeichner besitzen. Ist das erste Argument dagegen die leere Sequenz oder ein leerer String, so erhält der konstruierte QName den Null-Namensraum.

Keine Übergabe eines Präfixanteils für den Null-Namensraum
Ist der erzeugte QName im Null-Namensraum, so darf der für den QName übergebene Bezeichner keinen Doppelpunkt enthalten – dies entspricht indirekt der Forderung, dass kein Präfixanteil vorliegen darf, auch nicht in Form des leeren Strings (also z.B. als ":name").

Wird gegen diese Anforderung, oder generell gegen die für QNames geforderte lexikale Form verstoßen, so wird der Fehler »Invalid lexical value.« gemeldet (err:FOCA0002).

Beispiele:

Beispiel 1 – Ein QName mit Namensraum:

fn:QName( "http://www.beispiel.de/beispiel", 
          "mein:name"
  )

gibt den gültigen QName mein:name zurück, in expandierter Form lesbar als:

{http://www.beispiel.de/beispiel}name

Ein QName wird zum internen Gebrauch expandiert verwendet und nur exemplarisch auf die obige Art dargestellt. Der Namensraumanteil ist hierfür in geschweifte Klam­mern {} gesetzt, der lokale Bezeichner fett dargestellt.

Beispiel 2 – Ein QName mit Null-Namensraum:

fn:QName( (),
          "name"
  )

gibt den gültigen QName name zurück, der sich jedoch im Null-Namensraum befindet, expandiert also folgendermaßen lautet:

{}name

Expandierter QName im Null-Namensraum
Ein expandierter QName im Null-Namensraum besteht eigentlich nur aus dem lokalen Teil des Bezeichners. Der explizite (!) Null-Namensraum wird hier zur Darstellung des obigen Ergebnisses formal mit den leeren Klammern {} ausgedrückt.

Beispiel 3 – Fehler für QName mit Null-Namensraum:

fn:QName((), "mein:name")

ergibt den Fehler err:FOCA0002, da der als QName-Bezeichner übergebene String einen Doppelpunkt enthält, obwohl Null-Namensraum gefordert ist.

Funktionsdefinition:

XPath 1.0:

Funktion nicht verfügbar

XPath 2.0:

fn:QName($paramURI as xs:string?,
         $paramQName as xs:string) as xs:QName

   

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