Bei diesem Dokument handelt es sich um eine Übersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschützt; bitte beachten Sie die nachfolgenden Hinweise des Originaldokuments. Die Rechte an der Übersetzung liegen bei den Übersetzern. Die Übersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.
Bitte senden Sie Berichte über Fehler und Korrekturen zur deutschen Fassung an die Übersetzer.
Kommentare der Übersetzer, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht der Übersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.
Copyright © 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use, and software licensing rules apply.
Dieses Dokument schlägt ein an das HTML-Element
BASE
angelehntes Verfahren vor, um Base-URIs für Teile eines
XML-Dokuments zu definieren.
Dieses Dokument wurde von Mitgliedern des W3C und anderen interessierten Gruppen überprüft und vom Direktor als eine W3C-Empfehlung anerkannt. Es ist ein stabiles Dokument und kann als Referenzmaterial verwendet oder als normative Referenz von einem anderen Dokument zitiert werden. Die Aufgabe des W3C bei der Erstellung dieser Empfehlung ist es, die Aufmerksamkeit auf diese Spezifikation zu lenken und deren weitläufige Verbreitung zu fördern. Dies erhöht die Funktionalität und die Interoperabilität des Webs.
Dieses Dokument wurde von der W3C XML Linking Working Group als Teil der XML Activity in der W3C Architecture Domain erstellt. Für Hintergrundinformationen zu dieser Arbeit lesen Sie bitte das XML Activity Statement.
Bitte senden Sie Berichte über mögliche Fehler in diesem Dokument an die öffentliche Mailing-Liste www-xml-linking-comments@w3.org (Archiv unter http://lists.w3.org/Archives/Public/www-xml-linking-comments/). Jeder bestätigte Fehler wird in einer Fehlerliste dokumentiert, die abgerufen werden kann unter http://www.w3.org/2001/06/xmlbase-errata.
Die englische Version dieser Spezifikation ist die einzige normative Version. Übersetzungen dieses Dokuments sind abzurufen unter http://www.w3.org/2001/06/xmlbase-translations.
Eine Liste der aktuellen W3C-Empfehlungen und anderer Dokumente kann unter http://www.w3.org/TR/ abgerufen werden.
1 Einleitung
2 Terminologie
3 xml:base-Attribut
3.1 Verschlüsseln und Ersetzen in URI-Verweisen
4 Auflösen relativer URIs
4.1 Beziehung zu RFC 2396
4.2 Feinheit von Base-URI-Information
4.3 Vervollständigen von URIs mit Hilfe von Base-URIs
5 Konformität
A Quellenangaben
B Quellenangaben (nicht normativ)
C Berührungspunkte mit anderen Standards (nicht normativ)
Die XML Linking Language [XLink] definiert
Konstrukte, die der Extensible Markup Language (XML) 1.0 [XML]
unterliegen, um Verweise zwischen Quellen zu beschreiben. Eine der
ausgesprochenen Anforderungen von XLink ist es, HTML-Verweiskonstrukte
[HTML 4.01] generisch zu unterstützen. Das HTML-Element
BASE
ist ein solches Konstrukt, das die XLink Working Group
in Betracht gezogen hat. BASE
erlaubt Autoren
ausdrücklich, einen Base-URI für ein Dokument anzugeben, um
relative URIs zu externen Grafiken, Applets, Formular verarbeitenden
Programmen, Style Sheets usw. aufzulösen.
Dieses Dokument beschreibt einen Mechanismus, um die Vorteile eines
Base-URIs für XLink zu verwenden, aber als eine modulare Spezifikation,
so dass andere XML-Anwendungen, die von der zusätzlichen Kontrolle
über relative URIs profitieren können, aber nicht auf XLink
aufbauen, ebenso Gebrauch davon machen können. Die Syntax besteht aus
einem einzigen XML-Attribut namens xml:base
.
Der Aufbau von XML Base beruht auf dem normativen Bezug zu
neuen Spezifikationen, zum Beispiel XLink und XML Infoset. Anwendungen
und Spezifikationen, die auf diesen neuen Technologien aufbauen, werden
XML Base von Haus aus unterstützen. Das Verhalten von
xml:base
-Attributen in Anwendungen, die keinen direkten oder
indirekten Bezug zu XML Base haben, ist nicht definiert.
[Definition: Die Schlüsselworte muss, darf nicht, erforderlich, kann, sollte, empfohlen und optional in dieser Spezifikation sind zu interpretieren, wie in [IETF RFC 2119] beschrieben.]
Die Begriffe Base-URI und relativer URI werden in dieser Spezifikation verwendet, wie in [IETF RFC 2396] definiert.
xml:base
-Attribut
Das Attribut xml:base
kann
in XML-Dokumente eingefügt werden, um einen Base-URI
anzugeben, der sich vom Base-URI des Dokuments oder des externen
Entities unterscheidet.
Der Wert dieses Attributs wird als URI-Verweis interpretiert, wie in
RFC 2396 [IETF RFC 2396] definiert, nachdem er
laut Abschnitt 3.1 verarbeitet wurde.
In einem XML-Prozessor, der Namensräume berücksichtigt, ist
das xml
-Präfix an den Namensraumnamen
http://www.w3.org/XML/1998/namespace
gebunden wie in
"Namensräume in XML" [XML Names] beschrieben
ist. Beachten Sie, dass xml:base
aber noch von Prozessoren
verarbeitet werden kann, die Namensräume nicht berücksichtigen.
Es folgt ein Beispiel mit xml:base
in einem einfachen
Dokument, das XLinks enthält. XLink bezieht sich normativ auf XML
Base zur Interpretation relativer URI-Verweise in
xlink:href
-Attributen.
<?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>Virtual Library</title> </head> <body> <paragraph>See <link xlink:type="simple" xlink:href="new.xml">what's new</link>!</paragraph> <paragraph>Check out the hot picks of the day!</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">Hot Pick #1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">Hot Pick #2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">Hot Pick #3</link> </item> </olist> </body> </doc>
Die URIs in diesem Beispiel werden wie folgt zu vollständigen URIs aufgelöst:
"what's new" wird aufgelöst zum URI "http://example.org/today/new.xml"
"Hot Pick #1" wird aufgelöst zum URI "http://example.org/hotpicks/pick1.xml"
"Hot Pick #2" wird aufgelöst zum URI "http://example.org/hotpicks/pick2.xml"
"Hot Pick #3" wird aufgelöst zum URI "http://example.org/hotpicks/pick3.xml"
Die erlaubten Zeichen in xml:base
-Attributen
sind die gleichen wie für XML, [Unicode].
Jedoch sind einige Unicode-Zeichen nicht für URI-Verweise zugelassen,
deshalb müssen Prozessoren diese
Zeichen verschlüsseln und ersetzen, um einen gültigen
URI-Verweis vom Attributwert zu erhalten.
Diese nicht zugelassenen Zeichen beinhalten alle Nicht-ASCII-Zeichen und die in Abschnitt 2.4 von [IETF RFC 2396] ausgeschlossenen Zeichen mit Ausnahme des Zahlenzeichens (#) und des Prozentzeichens (%) und der eckigen Klammern, die laut [IETF RFC 2732] wieder erlaubt sind. Nicht zugelassene Zeichen müssen wie folgt ersetzt werden:
Jedes nicht erlaubte Zeichen wird in UTF-8 [IETF RFC 2279] konvertiert als ein oder mehrere Bytes.
Alle Bytes, die einem nicht zugelassenen Zeichen zuzuordnen sind, werden mit dem URI-Ersatzmechanismus ersetzt (das bedeutet, sie werden in %HH konvertiert, wobei HH der hexadezimale Wert des Byte-Werts ist).
Das originale Zeichen wird von der erhaltenen Zeichenkette ersetzt.
RFC 2396 [IETF RFC 2396] sieht vor, Base-URI-Informationen in ein Dokument einzubetten. Die Regeln für die Ermittlung des Base-URI können wie folgt zusammengefasst werden (höchste Priorität zuerst):
Der Base-URI ist im Inhalt des Dokuments eingebettet.
Der Base-URI ist der des einschließenden Entity (z.B. message, document, oder none).
Der Base-URI ist der URI, mit dem das Entity empfangen wurde.
Der Base-URI wird durch den Kontext der Anwendung definiert.
Anmerkung:
Der Begriff "Entity" in den Punkten #2 und #3 verwendet die Bedeutung laut RFC 2396. In allen anderen Bereichen dieses Dokuments wird der Begriff "Entity" in seiner XML-Bedeutung verwendet.
Dieses Dokument gibt die Details zu Punkt #1 an, für die Einbindung von Base-URI-Informationen im speziellen Fall von XML-Dokumenten.
Relative URIs in einem XML-Dokument werden immer nach einem Element, einem Dokument-Entity oder einem externen Entity aufgelöst. Es gibt keinen Mechanismus für eine feinere Auswahl, wie z.B. nach Attribut, nach Zeichen oder nach Entity Base Informationen. Weder von internen Entities, ob in einem internen Subset oder einer externen DTD deklariert, noch von freistehendem Text (Text, der nicht von einem Element umschlossen wird) in einem externen Entity wird erwartet, einen Base-URI zu setzen, der von dem Base-URI im Bereich des Entity-Verweises abweicht.
Der Base-URI eines Dokument-Entities oder eines externen Entities wird von den Regeln in RFC 2396 bestimmt. Das bedeutet, dass der Base-URI jener URI ist, mit dessen Hilfe das Dokument-Entity oder das externe Entity empfangen wurde.
Der Base-URI eines Elements ist:
der Base-URI, der durch das xml:base
-Attribut
des Elements bestimmt wird, sofern eines existiert, sonst
der Base-URI des Elternelements innerhalb des Dokument-Entities oder des externen Entities, sofern eines existiert, sonst
der Base-URI des Dokument-Entity oder des externen Entities, das dieses Element enthält.
Der Base-URI, der zu einem gegebenen relativen URI in einem XML-Dokument gehört, wird wie folgt bestimmt:
Der Base-URI für einen URI-Verweis, der in einem Textinhalt erscheint, ist der Base-URI des Elements, das den Text enthält.
Der Base-URI für einen URI-Verweis, der in einem
xml:base
-Attribut erscheint, ist der Base-URI
des Elternelements jenes Elements, welches das
xml:base
-Attribut enthält, sofern eines innerhalb
des Dokument-Entities oder des externen Entities existiert, ansonsten
der Base-URI des Dokument-Entities oder des externen Entities, welches
das Element enthält.
Der Base-URI für einen URI-Verweis, der in irgendeinem anderen Attributwert erscheint, eingeschlossen voreingestellte Attributwerte, ist der Base-URI des Elements, welches das Attribut enthält.
Der Base-URI für einen URI-Verweis, der im Inhalt einer Verarbeitungsanweisung steht, ist der Base-URI des Elternelements der Verarbeitungsanweisung, sofern eines innerhalb des Dokument-Entities oder des externen Entities existiert, ansonsten ist es der Base-URI des Dokument-Entities oder des externen Entities, das die Verarbeitungsanweisung enthält.
Anmerkung:
Die Gegenwart eines xml:base
-Attributs
kann in dem Fall zu unerwarteten Ergebnissen führen, in dem der
Attributwert nicht direkt im XML-Dokument-Entity angegeben wird,
sondern über einen voreingestellten
Wert, der in einem externen Entity deklariert ist. Solche Deklarationen
können eventuell nicht von einer Software gelesen werden, die auf
einem nicht validierenden XML-Prozessor aufbaut. Viele XML-Anwendungen
versäumen es, einen validierenden Prozessor zu fordern. Um eine
korrekte Verarbeitung durch solche Prozessoren sicherzustellen,
sollten xml:base
-Werte entweder
direkt oder über
voreingestellte Attribute innerhalb
des internen Subsets der DTD angegeben werden.
XML Base definiert einen Mechanismus, um Base-URI-Informationen innerhalb eines Dokuments einzubetten. Es definiert keinen Mechanismus, der erkennt, welcher Inhalt oder welcher Attributwert URIs enthalten könnte. Das ist nur den Spezifikationen oder Anwendungen bekannt, die dem Vokabular die Semantik zuweisen.
Es ist die Intention von XML Base, dass zukünftige Spezifikationen und Revisionen von XML-Vokabular die Teile eines XML-Dokuments angeben, die als URIs erachtet werden sollen und einen normativen Verweis auf diese Spezifikation beinhalten, um sicherzustellen, dass relative URIs in allen XML-Dokumenten gleich behandelt werden.
Die Berührungspunkte von XML Base mit anderen Standards (zum Erscheinungszeitpunkt dieses Dokuments) sind im Folgenden beschrieben:
XML 1.0 [XML] verwendet URI-Verweise im
System Identifier für externe Entities. Weil diese
Deklarationen außerhalb des Dokumentelements liegen
(in einem internen Subset oder in einer externen DTD), verhindern
die Bereichsauswahlregeln für xml:base
, dass
diese URIs vom xml:base
-Wert berührt werden.
XML Infoset [XML Infoset] definiert die Base-URI-Eigenschaft von Informationseinheiten für Elemente. Die aktuelle Infoset-Spezifikation unterstützt XML Base, um den Wert dieser Eigenschaft zu bestimmen. Benutzerschnittstellen, Anwendungen und Spezifikationen, die diese Infoset-Eigenschaft referenzieren, unterstützen XML Base von Haus aus.
Namensräume in XML [XML Names]
verwendet URI-Verweise, die, laut der aktuellen Definition,
nicht zum Zweck der Namensraumidentifikation relativ zum
Base-URI aufgelöst werden sollten, der mit
xml:base
definiert ist. Prozesse auf höheren
Verarbeitungsebenen, die Namensraum-URIs auflösen, werden
nicht von der Namensraumspezifikation erfasst und können
nach eigenem Ermessen bestimmen, ob xml:base
berücksichtigt wird und Quellen mit diesen URIs empfangen
werden sollen.
Das XPath-Datenmodell [XPath]
berücksichtigt weder Base-URI-Informationen noch die
Grenzen der externen Entities und ist somit ungenügend
ausgerüstet, um die Auflösung von relativen
URI-Verweisen innerhalb dieser Entities so zu unterstützen,
dass sie korrekt aufgelöst werden. Das schließt
relative URI-Verweise in xml:base
-Attributen ein.
Die XSLT-Erweiterungen [XSLT] zum XPath-Datenmodell sehen einen Mechanismus vor, um Base-URI-Informationen zu bewahren, aber sie definieren diese Informationen auf eine Art, die eine Unterstützung für XML Base ausschließt. Zukünftige XSLT-Versionen möchten vielleicht die Unterstützung für XML Base fordern.
XML Schema Teil 2: Datentypen [XML Datatypes] definiert einen
eigenen Datentyp uriReference
. Die Spezifikation XML-Datentypen
möchte vielleicht erfordern, dass Anwendungen, die diese
Datentypen erkennen und solche URIs auflösen, von XML Base
Kenntnis haben.
Die Spezifikation XLink [XLink] fordert Unterstützung für XML Base.
XHTML [XHTML] verwendet URI-Verweise, die über die in XLink auszudrückenden hinausgehen. Diese URI-Verweise könnten von einer Anwendung relativ zum Base-URI aufgelöst werden, der von XML Base definiert ist. Die Spezifikation XHTML möchte eventuell ihren Grad der Unterstützung für XML Base beschreiben.
Stichwort | Art des Vorkommens |
---|---|
Muss, Darf nicht usw. | Definition |