xml:id
Version 1.0Â (W3C)Bei diesem Dokument handelt es sich um die deutsche Ăśbersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschĂĽtzt; bitte beachten Sie die Hinweise des Originaldokuments sowie die Anmerkungen der W3C-Dokumentlizenz. Die Ăśbersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maĂźgebliche Dokument ist das englische Original.
Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an den Ăśbersetzer. Kommentare des Ăśbersetzers, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht des Ăśbersetzers. Sie sind kein Bestandteil des Ursprungsdokuments.
xml:id
Version 1.0Bitte beachten Sie auch die Errata dieses Dokuments, die normative Berichtigungen beinhalten können.
Beachten Sie ebenso Ăśbersetzungen dieses Dokuments.
Dieses Dokument ist auch in den folgenden non-normativen Formaten verfĂĽgbar: XML.
Copyright © 2005 W3C® (MIT, INRIA, Keio), alle Rechte vorbehalten. Es gelten die Haftungs-, Marken-, Dokumentverwendungs- und Lizenzierungsbestimmungen des W3C.
Dieses Dokument bestimmt die Bedeutung des xml:id
-Attributs als ID-Attribut in XML-Dokumenten und definiert die Verarbeitung dieses Attributs so, dass es IDs unabhängig von Validierung, ohne Abruf externer Ressourcen und ohne Angewiesenheit auf interne Untermengen identifiziert.
Dieser Abschnitt beschreibt den Status dieses Dokuments zur Zeit seiner Veröffentlichung. Andere Dokumente können an seine Stelle treten. Eine Liste aktueller W3C-Veröffentlichungen sowie die letzte Revision dieses technischen Berichts können im W3C-Index von technischen Berichten unter https://www.w3.org/TR/ eingesehen werden.
Dieses Dokument ist eine Empfehlung des W3C. Es wurde von der W3C-XML-Core-Arbeitsgruppe als Teil der XML-Aktivität entwickelt. Es wurde von W3C-Mitgliedern und anderen interessierten Parteien geprüft und vom Direktor indossiert. Es ist stabil und darf als Referenzmaterial verwendet oder als normative Referenz in anderen Dokumenten zitiert werden. Die Rolle des W3C bei der Erstellung dieser Empfehlung ist, Aufmerksamkeit auf die Spezifikation zu lenken und seinen umfassenden Einsatz zu fördern. Dies dient der Funktionalität und Interoperabilität des Webs.
Die englische Fassung dieser Spezifikation ist die einzige normative Fassung. Übersetzungen dieses Dokuments können verfügbar sein.
Wenn Sie Kommentare zu diesem Dokument haben, senden Sie sie an [email protected], eine Mailingliste mit öffentlichem Archiv. Eine Liste von Errata dieser Ausgabe ist ebenfalls verfügbar.
Dieses Dokument definiert die Bedeutung des xml:id
-Attributs als ID in XML-Dokumenten sowie seine Verarbeitung, um IDs ohne Validierung, ohne Abruf externer Ressourcen und ohne Angewiesenheit auf interne DTD-Untermengen zu identifizieren.
Dieses Dokument basiert auf der xml:id
Version 1.0 Proposed Recommendation vom 14. Juli 2005. Erhaltenes Feedback resultierte in geringfügigen redaktionellen Änderungen. Nachweise für die Interoperabilität von mindestens zwei Implementierungen dieser Spezifikation wurden im Implementierungsbericht dokumentiert. Eine Reihe von Tests ist ebenso verfügbar.
Dieses Dokument wurde unter Berücksichtigung der W3C-Patentrichtlinien vom 5. Februar 2004 erstellt. Die Arbeitsgruppe betreut eine öffentliche Liste von Patentbekanntmachungen, die für dieses Dokument relevant sind; diese Seite beinhaltet auch Instruktionen, um ein Patent anzuzeigen (und auszuschließen). Ein Individuum, das unmittelbare Kenntnis von einem Patent hat, von dem es glaubt, dass es essentielle Ansprüche hinsichtlich dieser Spezifikation anmeldet, sollte diese Information in Übereinstimmung mit Abschnitt 6 der W3C-Patentrichtlinien offenlegen.
[XML 1.0] und [XML 1.1] bieten einen Mechanismus, Elemente mit eindeutigen Identifikatoren zu versehen. Dieser Mechanismus besteht darin, den Typ eines Attributs als »ID« zu deklarieren, woraufhin der Parser validieren wird, dass
Deklarationen aus sowohl interner als auch externer DTD-Untermenge eines XML-Dokuments können Attribute vom Typ ID festlegen. Die Verarbeitung der externen DTD-Untermenge ist für konforme XML-Prozessoren jedoch optional, und manche Spezifikationen, insbesondere [SOAP], verbieten DTDs vollständig und geben damit keine Garantie, dass alle Konsumenten des XML-Dokuments in der Lage sind, die Identifikatoren zu ermitteln.
Identifikatoren können auch durch externe Mechanismen deklariert werden. Von besonderem Interesse ist [XML Schemas], das mit derselben Eindeutigkeit und denselben Gültigkeitsbeschränkungen wie XML den Typ xs:ID
bietet. Es gibt jedoch keine Garantie, dass für Konsumenten das »richtige« Schema verfügbar ist oder dass sie es verarbeiten, wenn es verfügbar ist.
Ein Mechanismus, der es ermöglicht, dass eindeutige Elementbezeichner von allen konformen XML-Prozessoren erkannt werden, egal, ob diese validieren oder nicht, ist wünschenswert, um die Verknüpfung von XML-Unterressourcen robust zu machen. Diese Spezifikation erlaubt Autoren, Elemente mittels IDs zu identifizieren, die durch jeden Prozessor erkannt werden können, ungeachtet dessen, ob oder wie interne oder externe Deklarationen vorliegen.
Ein weiteres Problem besteht darin, dass auf DTD und XML Schema basierende Identifikatoren durch verschiedene konzeptionelle Mechanismen – durch die Attributstyp-Informationssatz-Eigenschaft bzw. die Typendefinition-Eigenschaften-Familie – hervorgehoben werden. Ein gleichartiger Mechanismus zur Erkennunung von Identifikatoren ist erstrebenswert.
Diese Spezifikation bietet einen solchen Mechanismus: Sie beschreibt die Semantik von xml:id
-Attributen. Die Spezifikation wurde so entworfen, dass sie eine separate Verarbeitungsebene darstellt und mit existierenden Validierungstechnologien kompatibel ist. Implementierer werden ermutigt, die xml:id
-Verarbeitung zu unterstĂĽtzen und ID-Typenbestimmung zum Standardverhalten ihrer Prozessoren zu machen.
Es war eines der Grundprinzipien beim Entwurf dieser Spezifikation, dass das Ergebnis einer xml:id
-Verarbeitung dasselbe sein sollte, wenn eine passende Deklaration vom Prozessor erkannt und verwendet wurde.
Definition: In dieser Spezifikation sind die Schlüsselwörter muss, darf nicht, notwendig, soll, soll nicht, sollte, sollte nicht, empfohlen, darf und optional zu verstehen wie in [IETF RFC 2119] beschrieben.
Definition: Ein xml:id
-Prozessor entspricht einem Softwaremodul, das zusammen mit einem XML-Prozessor arbeitet, um Zugang zu den IDs in einem XML-Dokument zu bieten.
Definition: Ein xml:id
-Fehler entspricht einem nicht-fatalen Fehler, der auftritt, wenn ein xml:id
-Prozessor ermittelt, dass ein Dokument die Beschänkungen dieser Spezifikation missachtet.
Validierung ist der Prozess, ein XML-Dokument (oder einen Teil eines XML-Dokuments) mit einer Grammatik oder einem Satz von Regeln zu vergleichen, um zu ermitteln, ob die vorliegende Struktur des Dokuments die Beschränkungen der Grammatik oder der Regeln befriedigt. Manche Validierungstechnologien führen auch Typenbestimmungen durch und ermitteln nicht nur, ob das Dokument die spezifizierten Beschränkungen erfüllt, sondern beispielsweise auch, welche Elemente oder Attribute dem Typ »ID« entsprechen.
Obwohl sie oft zusammen durchgeführt werden, stellen Validierung und Typenbestimmung nicht denselben Prozess dar. So kann zum Beispiel ein XML-1.0-Prozessor, der nicht validiert, Typenbestimmungen durchführen, indem er lediglich Deklarationen aus dem internen »Subset« heranzieht, ohne jemals Informationen zur strukturellen Validität zur Verfügung stehen zu haben.
Definition: Der Prozess der ID-Typenbestimmung sorgt dafĂĽr, dass ein xml:id
-Attribut einer ID entspricht. Oftmals wird dies erzielt, indem innerhalb des »Infosets« bzw. Post-Schema-Validierung-Infosets (PSVI) die Art des Attributs in »ID« geändert wird, auch wenn dies nicht den einzigen möglichen Weg darstellt.
Anmerkung: Die Verarbeitung von IDs auf Applikationsebene, die beinhaltet, welche Elemente tatsächlich von welchen IDs berücksichtigt werden können, ist nicht Gegenstand dieser Spezifikation.
Gemäß [Namensräume in XML] (sowie [Namensräume in XML 1.1]) sind Präfixes, die mit xml
beginnen, fĂĽr die Verwendung von XML- und XML nahestehenden Spezifikationen reserviert. Diese Spezifikation lizenziert den Gebrauch des Attributs xml:id
zur Verwendung als allgemeine Syntax fĂĽr Identifikatoren in XML mitsamt der hier spezifizierten Semantik.
Autoren von XML-Dokumenten werden angeregt, ihre ID-Attribute xml:id
zu nennen, um die Interoperabilität dieser Identifikatoren im Web zu fördern.
Bei namensraumgewahren XML-Prozessoren ist das xml
-Präfix wie in »Namensräume in XML« ([Namensräume in XML] sowie [Namensräume in XML 1.1]) beschrieben an den Namensraumnamen http://www.w3.org/XML/1998/namespace
gebunden. Beachten Sie, dass xml:id
immer noch von XML-Prozessoren, die nicht auf Namensräume achten, verwendet werden kann.
xml:id
-AttributenJedes xml:id
-Attribut wird auf die folgende Art verarbeitet:
Der Attributswert wird gemäß den Regeln zur Attributswert-Normalisierung von Attributen des Typs ID normalisiert. Beachten Sie für weitere Details E. Attributswert-Normalisierung in IDs.
Die Infoset-Eigenschaft »normalisierter Wert« wird mit dem normalisierten Wert aktualisiert.
Mit dem normalisierten Wert wird eine ID-Typenbestimmung durchgefĂĽhrt.
Ein xml:id
-Prozessor muss sicherstellen, dass die folgenden Einschränkungen für alle xml:id
-Attribute gelten:
Der normalisierte Wert des Attributs entspricht einem NCName
gemäß der »Namensräume in XML«-Empfehlung, der dieselbe Version wie das Dokument hat, in dem das Attribut vorkommt (NCName
in XMLÂ 1.0 oder NCName
in XMLÂ 1.1).
Der deklarierte Typ des Attributs ist, sofern es einen besitzt, »ID«. Alle Deklarationen von ID-Attributen müssen »ID« als Typ des Attributs spezifizieren.
Ein xml:id
-Prozessor sollte sicherstellen, dass die folgende Einschränkung gilt:
Die Werte aller Attribute des Typs »ID« (was alle xml:id
-Attribute umfasst) innerhalb eines Dokuments sind einmalig.
Ein xml:id
-Fehler tritt bei jedem xml:id
-Attribut auf, das nicht diese Auflagen erfĂĽllt.
Der xml:id
-Prozessor fĂĽhrt eine ID-Typenbestimmung bei allen xml:id
-Attributen durch, selbst bei denen, die keine Auflagen erfĂĽllen.
Ein xml:id
-Prozessor sollte die Infoset-Referenzen-Eigenschaft – wie in Abschnitt 2.3 von [XML Information Set] beschrieben – sowie jegliche implementierungsspezifischen Strukturen, die zur Querreferenzierung verwendet werden, aktualisieren, um die Ergebnisse der ID-Typenbestimmung wiederzugeben.
Viele Validierungstechnologien erlegen die Beschränkung auf, dass ein XML-Element über höchstens ein Attribut des Typs ID verfügen darf. Diese Einschränkung wird durch die xml:id
-Verarbeitung nicht auferlegt.
Diese Spezifikation definiert die Verarbeitung von xml:id
, aber es liegt an der Anwendung, zu ermitteln, wann eine solche Verarbeitung vorgenommen wird. Benutzer von Applikationen, die Mittel dazu bieten, XML-Dokumente zu modifizieren, dĂĽrfen normalerweise erwarten, dass eine xml:id
-Verarbeitung vorgenommen wird, sobald ein ID-Wert verändert wird.
Bei DurchfĂĽhrung einer ID-Typenbestimmung muss der xml:id
-Prozessor die zugewiesenen xml:id
-Attribute der Anwendung mitteilen. Wie dies mitgeteilt wird, ist implementierungsabhängig.
FĂĽr Anwendungen, die konzeptionell auf dem Informationssatz operieren, kann ein xml:id
-Prozessor die Attributstyp-Eigenschaft des Infosets verwenden:
Der xml:id
-Prozessor darf die Ergebnisse der ID-Typenbestimmung auf eine DTD-kompatible Art weitergeben, indem er die Infoset-Attributstyp-Eigenschaft des Attributs auf »ID« setzt.
FĂĽr Anwendungen, die konzeptionell auf dem PSVI arbeiten, kann ein xml:id
-Prozessor die Typendefinition-Familie der PSVI-Eigenschaft gebrauchen:
Der xml:id
-Prozessor darf die Ergebnisse der ID-Typenbestimmung auf eine XML-Schema-kompatible Weise weitergeben, indem er die PSVI-Typendefinition-Eigenschaft des Attributs auf xs:ID
setzt.
Bei Anwendungen, die mit mittels anderer Methoden definierten Datenmodellen arbeiten, sind die Mechanismen implementierungsabhängig:
Der xml:id
-Prozessor darf die Ergebnisse der ID-Typenbestimmung auf eine (beliebige) andere Art weitergeben.
Die SchlĂĽsselanforderung ist, dass die Ergebnisse der ID-Typenbestimmung der Applikation mitgeteilt werden.
Eine Verletzung der Bestimmungen dieser Spezifikation fĂĽhrt zu einem xml:id
-Fehler. Solche Fehler sind nicht fatal, sollten aber durch den xml:id
-Prozessor mitgeteilt werden. Im Interesse der Interoperabilität wird empfohlen, dass xml:id
-Fehler nicht »still« ignoriert werden.
xml:id
Konformität mit xml:id
beruht fĂĽr Applikationen, die auf XML-Prozessoren mittels Validierungstechnologien setzen, auf dem Gebrauch des xml:id
-Konstrukts wie in »Verarbeitung von xml:id
-Attributen« beschrieben sowie Konformität mit sowohl den Bestimmungen dieser Spezifikation als auch den Regeln der Validierungstechnologie.
Konformität mit xml:id
wird fĂĽr Applikationen, die auf nicht-validierenden XML-Prozessoren aufsetzen, sowohl durch die Erkennung von xml:id
-Attributen wie in »Verarbeitung von xml:id
-Attributen« erklärt als auch durch Konformität mit den Bestimmungen dieser Spezifikation definiert.
Konformität mit Bestimmungen, die erfüllt werden »müssen«, ist obligatorisch. Es wird empfohlen, dass Anwendungen die anderen Bestimmungen ebenfalls erfüllen. Diese Spezifikation definiert keine einfachen optionalen Vorgaben.
Ein Dokument ist zu dieser Spezifikation konform, wenn es keine xml:id
-Fehler generiert.
Diese Spezifikation unterliegt dem [XML Information Set]. Die folgenden Informationsbestandteile müssen in den Eingabeinformationssätzen vorhanden sein, um eine korrekte Verarbeitung zu ermöglichen:
Element Information Items mit Eigenschaft fĂĽr Attribute.
Attribute Information Items mit Eigenschaften fĂĽr Namensraumname, lokaler Name und normalisierter Wert.
Zusätzlich können die folgenden Eigenschaften im Ausgabe-Informationssatz verfügbar sein:
Eigenschaften fĂĽr Attributstypen in Attribute Information Items.
Diese Spezifikation ist nicht erweiterbar. Es gibt keine Vorkehrungen fĂĽr Anwendungsdesigner, den Namen des xml:id
-Attributs, den Attributssatz von Werten, die als IDs angesehen werden, oder die Orte, an denen diese vorkommen können, zu verändern oder andere Erweiterungen vorzunehmen.
Die Spezifikation Canonical XML Version 1.0 beschreibt einen Prozess, in dem Attribute aus dem xml:
-Namensraum in einem »kanonisierten« Dokument vererbt werden. Während dies zu akzeptablen Ergebnissen mit xml:lang
- oder xml:space
-Attributen fĂĽhrt, ergibt die Verarbeitung von xml:id
-Attributen – besonders die von xml:id
-Attributen, die nicht einmalig sind – auf diese Weise Dokumente, die wahrscheinlich xml:id
-Fehler beinhalten.
Dies ist eine augenscheinliche Schwachstelle im Design von Canonical XML. Die Spezifikation Exclusive XML Canonicalization Version 1.0 umfasst diese Funktion nicht und mag fĂĽr Dokumente, die IDs beinhalten, angebrachter sein.
Dieser Anhang beschreibt, wie die Verarbeitung von xml:id
mit ausgewählten Validierungstechnologien interagiert.
Autoren von DTDs werden ermutigt, xml:id
-Attribute zu verwenden, wenn in ihren DTDs deklarierte Identifikatoren fĂĽr Elemente eingesetzt werden.
Das folgende DTD-Fragment illustriert eine Beispieldeklaration des xml:id
-Attributs:
<!ATTLIST someElement
xml:id ID #IMPLIED
>
DTD-Autoren werden ermutigt, Attribute mit dem Namen xml:id
als Typ ID zu deklarieren. Ein Dokument, das xml:id
-Attribute gebraucht, die einen anderen Typ als ID deklariert haben, werden immer xml:id
-Fehler erzeugen.
Konsumenten von Dokumenten, die bei Verwendung sauber deklarierter xml:id
-Attribute validiert wurden, können IDs durch die Attributstyp-Eigenschaft erkennen.
XML-Schema-Autoren werden angeregt, xml:id
-Attribute zu gebrauchen, wenn sie Identifikatoren fĂĽr Elemente bestimmen, die in ihren Schemata deklariert werden. Beachten Sie, dass dies am einfachsten erreicht werden kann, indem das Schema fĂĽr den XML-Namensraum importiert und die dort beinhaltete Attributsdeklaration verwendet wird.
Das folgende XML-Schema-Fragment fĂĽr den XML-Namensraum illustriert eine Beispieldeklaration des xml:id
-Attributs:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/XML/1998/namespace">
<xs:attribute name="id" type="xs:ID" />
</xs:schema>
XML-Schema-Autoren werden ermutigt, Attribute mit dem Namen xml:id
mit dem Typ xs:ID
zu deklarieren. Ein Dokument, das xml:id
-Attribute gebraucht, die mit einem anderen Typ als xs:ID
deklariert wurden, wird immer xml:id
-Fehler erzeugen.
Konsumenten von Dokumenten, die xml:id
-Attribute gegen ein für den XML-Namensraum geeignetes Schema validieren, können IDs durch die Typendefinition-Familie der PSVI-Eigenschaften erkennen.
Anwendungen können xml:id
-Attribute als IDs erkennen, indem sie konzeptionell einen minimal konformen Schema-Prozessor sowie das obige Schema verwenden.
Beachten Sie, dass die Ergebnisse eines minimal konformen Schema-Prozessors, der das obige Schema verarbeitet, angenähert werden, indem nur nach Attributen mit Namen xml:id
gesucht, sich der korrekten lexikalischen Form (NCName
) solcher Attribute vergewissert und die Einmaligkeit des Werts sichergestellt wird.
Autoren von RELAX-NG-Grammatiken werden ermutigt, xml:id
-Attribute zu verwenden, wenn sie Identifikatoren fĂĽr Elemente bestimmen, die in ihren Schemata deklariert werden.
Das folgende RELAX-NG-Fragment stellt eine Beispieldeklaration des xml:id
-Attributs dar:
<optional xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="https://www.w3.org/2001/XMLSchema-datatypes">
<attribute name="xml:id">
<data type="ID" />
</attribute>
</optional>
RELAX-NG-Grammatik-Autoren werden angeregt, Attribute vom Namen xml:id
mit dem Typ xs:ID
zu deklarieren. Ein Dokument, das xml:id
-Attribute gebraucht, die als anderer Typ als xs:ID
deklariert wurden, wird immer xml:id
-Fehler erzeugen.
[XML 1.0] verlangt von Parsern, alle Attributswerte zu normalisieren. Die Normalisierung erweitert Zeichen- und Entitätsreferenzen und bereinigt Zeilenende-Zeichen. Attribute vom Typ ID sind Ziel zusätzlicher Normalisierungsregeln wie dem Entfernen voran- und nachstehender Leerstellenzeichen und dem Ersetzen von Sequenzen von Leerraum durch ein einziges Leerzeichen.
Ein xml:id
-Prozessor muss sicherstellen, dass bei allen xml:id
-Attributen beide Normalisierungsschritte ausgeführt werden. So darf der Parser nicht die zusätzlichen Normalisierungschritte ausführen, die für Attribute des Typs ID gefordert werden, da dieses Attribut nicht als ID deklariert werden muss.
Bedenken Sie das folgende Dokument:
<!DOCTYPE doc [
<!ATTLIST doc xml:id ID #IMPLIED>
]>
<doc xml:id=" eins
">
<para xml:id=" zwei
"></para>
</doc>
Der initiale Wert von xml:id
auf doc
wird »eins« sein, da der Parser wusste, dass er einer ID entspricht. Der initiale Wert auf para
wird » zwei « sein, da der Parser nicht wusste, dass es sich um eine ID handelt und nicht die verlangte zusätzliche Normalisierung ausführt.
Nach der xml:id
-Verarbeitung wird der Wert der xml:id
-Attribute auf doc
und para
»eins« bzw. »zwei« entsprechen. Diese ordnungsgemäß normalisierten Werte werden in der »normalisierter Wert«-Infoset-Eigenschaft hinterlegt. Die Ausführung der xml:id
-Verarbeitung verändert den Infoset, wenn es unvollständig normalisierte xml:id
-Attribute gibt.
Anmerkung: Zwecks Interoperabilität sollten Dokumentersteller vollständig normalisierte Werte verwenden, die legalen NCName
-Namen in xml:id
-Attributen entsprechen.
Fehler entdeckt? E-Mail an jens@meiert.org.
Du bist hier: Startseite → Publikationen → xml:id
Version 1.0 (W3C)
Stand: 15. November 2007