unparsed-entity-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: XSLT 1.0
Rückgabewert: Ein URI vom Typ xs:anyURI; der URI-String einerexternen, nicht geparsten Entität. Hierbei werden die Basis-URIs der beteiligten Resourcen berücksichtigt (DTD/Schema, Stylesheet, Quell- und Ergebnisdokument), um die anschließende korrekte Einbindung der Entität zu gewährleisten.
Aufruf/Argumente:
unparsed-entity-uri($entity-bezeichner)
$entity-bezeichner:
Das übergebene Argument muss der Bezeichner einer ungeparsten Entität sein. Existiert keine ENTITY-Deklaration für diesen Bezeichner, so gibt die Funktion einen leeren String zurück.
Verwendungszweck:
Die Funktion gibt den gegenüber dem Basis-URI aufgelösten URI derjenigen nicht geparsten Entität zurück, deren Entityname ihr übergeben wurde. Die Funktion bezieht sich dabei stets auf des Dokument, in dem sich der zum Zeitpunkt des Funktionsaufrufs gültige Kontextknoten befindet.
Es ist ein Fehler, wenn die Funktion aufgerufen wird, falls das Kontextitem kein Knoten ist bzw. der Baum, in dem sich der Kontextknoten befindet, keinen Dokumentknoten besitzt (ERR XTDE1370).
Die XSLT-Funktion unparsed-entity-uri() dient dazu, die Pfade zwischen erzeugtem Dokument und einer externen Resource so abzugleichen, dass die URI-Beziehung zwischen beiden erhalten bleibt. Im einfachen Fall einer internen DTD entspricht der Rückgabewert der Funktion dem Pfad zwischen der Referenz und der Resource. Der XSLT-Prozessor kann den Pfad zu einem absoluten Pfad ergänzen, der die Lage des erzeugten XML-Dokuments berücksichtigt – für WWW-Dateien ergibt sich ein absoluter URL.
Im einfachen Fall einer internen DTD und, falls Quell- und Ergebnisdokument im selben Verzeichnis liegen, gibt die Funktion die absolute Adresse des Ergebnisdokuments aus und hängt an diese den relativen Pfad zum Entity an.
Komplexer wird es, wenn eine externe DTD vorliegt. In diesem Fall wird zusätzlich zum Pfad zwischen DTD und Entity auch jener zwischen Quelldokument und DTD einbezogen. Liegt das Ergebnisdokument zusätzlich in einem anderen Verzeichnis, wird auch dieses in den Pfad einbezogen.
Beispiel – Auflösung der URI eines nicht geparsten Entitys:
Enthält die DTD eine Deklaration in folgender Form:
<!ENTITY bild SYSTEM "bilder/mein_bild.jpg" NDATA JPEG>
so gibt der Ausdruck
<img href="{unparsed-entity-uri('bild')}">
einen HTML-<img>-Tag zurück, dessen href-Attribut die (absolute) URI des Bildes enthält. Die Funktion löst automatisch Pfade auf, die sich aus den Pfadrelationen von Quell- und Ergebnisdokument und DTD ergeben (die ja z.B. in verschiedenen Verzeichnissen liegen könnten).
Funktionsdefinition:
XSLT 1.0:
unparsed-entity-uri(string) => string
XSLT 2.0:
unparsed-entity-uri($entity-name as xs:string) as xs:anyURI
Mögliche Kompatibilitätsprobleme XSLT 2.0 zu XSLT 1.0:
In XSLT 2.0 besteht theoretisch die Möglichkeit, die Funktion aufzurufen, ohne dass ein gültiger Current Node vorliegt – dies erzeugt einen Laufzeitfehler (dynamic error).
<< 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