fn:resolve-uri

(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: Assoziation und Auffindung von Nodes und Ressourcen

Herkunft: XPath 2.0

Rückgabewert: Ein URI xs:anyURI in Form eines absolu­ten URI.

Aufruf/Argumente:

fn:resolve-uri($aufzuloesenderURI, $basisURI?)

$aufzuloesenderURI:
Obligatorisch. Ein String xs:string in der lexikali­schen Form eines relativen oder absoluten URI-Strings. Der leere String ist als Eingabewert gestattet.

$basisURI:
Optional. Ein String xs:string, gegenüber dem der URI-String des ersten Arguments aufgelöst werden soll. Lexikalisch muss das Argument einem absoluten URI vom Typ xs:anyURI entsprechen.

Verwendungszweck:

Die Funktion fn:resolve-uri() dient dazu, einen beliebigen als relativ betrachteten Eingabe-URI gegenüber einem Basis-URI aufzulösen und dergestalt einen absoluten URI vom Typ xs:anyURI zu konstruieren.

Hierbei kann ein, als zweites Argument übergebener Basis-URI als Bezugs­punkt verwendet werden. Dieser Basis-URI muss die Form eines absoluten URIs besitzen, ansonsten wird ein Fehler gemeldet (»Invalid argument to fn:resolve-uri()«, err:FORG0002).

Verzichtet man auf die Übergabe des zweiten Arguments, so wird der Basis-URI des statischen Kontextes des Funktionsaufrufs als Bezugspunkt verwendet. Ist im statischen Kontext kein Basis-URI definiert, wird ein Fehler gemeldet (»Base-uri not defined in the static context«, err:FONS0005).

Handelt es sich beim ersten Argument um den leeren String (ein lexikalisch korrekter URI-String), so gibt die Funktion entweder den übergebenen Basis-URI zurück oder den des statischen Kontexts. Im Prinzip kann man hier auch davon sprechen, dass ein relativer URI, bestehend aus dem leeren String, gegenüber dem Basis-URI aufgelöst wird.

Entspricht das erste Argument lexikalisch nicht einem xs:anyURI, so tritt ebenfalls der Fehler »Invalid argument to fn:resolve-uri()« (err:FORG0002) auf. Wird als erstes Argument dagegen die leere Sequenz übergeben, so gibt die Funktion eine leere Ergebnissequenz zurück.

Handelt es sich beim aufzulösenden URI bereits um einen absoluten URI, so wird er unverändert zurückgegeben. Es spielt in diesem Fall keine Rolle, ob ein zweites Argument mit einem Basis-URI übergeben wurde oder nicht. Ein absoluter URI ist als erstes Funktionsargument also definitiv gestattet (die Bezeichnung $relative in der Funktionssignatur ist irreführend).

Beispiele:

Beispiel 1 – Konstruktion eines absoluten URI mit Basis-URI:

fn:resolve-URI( 'beispiel/test',
                'http://www.beispiel.de/'
  )

löst den relativen URI gegenüber dem übergebenen Basis-URI auf und gibt fol­genden absoluten URI zurück:

"http://www.beispiel.de/beispiel/test"

Beispiel 2 – Übergabe des leeren Strings:

fn:resolve-URI( '',
                'http://www.beispiel.de/'
  )

löst den leeren String gegenüber dem übergebenen Basis-URI auf und gibt fol­genden absoluten URI zurück:

"http://www.beispiel.de/"

Beispiel 3 – Konstruktion eines absoluten URI, statischer Basis-URI:

fn:resolve-URI('beispiel/test')

löst den relativen URI gegenüber dem Basis-URI des statischen Kontextes auf und gibt ihn (umgebungsabhängig) als absoluten URI zurück:

file:/D:/xslt2/xpath2-funktionen/beispiel/test

Beispiel 4 – Übergabe des leeren Strings, statischer Basis-URI:

fn:resolve-URI('')

löst den leeren String gegenüber dem Basis-URI des statischen Kontextes auf und gibt ihn (umgebungsabhängig) als absoluten URI zurück:

file:/D:/xslt2/xpath2-funktionen/

Funktionsdefinition:

XPath 1.0:

Funktion nicht verfügbar

XPath 2.0:

fn:resolve-uri($relative as xs:string?) as xs:anyURI?

fn:resolve-uri($relative as xs:string?,
               $base as xs:string) as xs:anyURI?

   

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