Deutsche Übersetzung des Last Call Working Drafts Achtung: Neuere Version in englischer Sprache beim W3C!
Die Originalversion in englischer Sprache ist zu finden unter: Diese Übersetzung ist zu finden unter: Vorherige Übersetzung:
Die aktuelle Übersetzung ist zu finden unter: Dieses Dokument ist ein Working Draft, ein Arbeitsdokument, das zur Diskussion um XInclude aufruft. Die Verwendung als normative Referenz ist in diesem Stadium nicht erlaubt. (siehe: Status dieses Dokuments) Dieses Dokument kann Übersetzungsfehler enthalten. Kommentare oder Anregungen senden Sie bitte per Email an den Übersetzer. Sollten Sie Fragen zum Thema haben, schreiben Sie einfach. Bedanken möchte ich mich hiermit bei Jonathan Marsh, der mir schnell (selbst im Email-Zeitalter noch sehr schnell) und freudig meine Fragen beantwortet hat. Weitere Übersetzungen zum Thema XML finden Sie
auf den Seiten des
Übersetzers oder beim
W3C |
Copyright © 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
Dieses Dokument gibt ein Verarbeitungsmodell und eine Syntax für allgemein anzuwendende Inklusion an. Inklusion wird durch die Zusammenfassung verschiedener XML-Infosets in ein einzelnes zusammengesetztes Infoset erreicht. Die Spezifikation der XML-Dokumente (Infosets), die zusammengefasst werden sollen, und die Handhabung des Zusammenfassungsprozesses werden in XML-harmonischer Syntax (Elemente, Attribute, URI-Verweise) ausgedrückt.
Die XML Core Working Group erwartet mit diesem "2001 May 16 XInclude Last Call working draft" Kommentare zu der Spezifikation. Der Zeitraum für diesen letzten Aufruf erstreckt sich vom 16. Mai bis zum 05. Juni 2001.
Die W3C-Mitglieder und andere Interessierte sind dazu eingeladen, diese Spezifikation zu überprüfen und über erste Implementierungserfahrungen zu berichten. Bitte senden Sie Kommentare (in englischer Sprache) an www-xml-xinclude-comments@w3.org. Archiv der Kommentare.
Obwohl wir Berichte über Implementierungserfahrungen begrüßen, wird die XML Core Working Group keine frühe Implementierung erlauben, um die Möglichkeit zu wahren, Veränderungen an dieser Spezifikation vornehmen zu können, bevor die endgültige Version verabschiedet wird.
Hintergrundinformationen zu dieser Arbeit finden Sie im XML Activity Statement.
Eine Liste der aktuellen W3C-Empfehlungen und andere technische Dokumente können unter http://www.w3.org/TR/ eingesehen werden.
Viele Programmiersprachen besitzen einen Inklusionsmechanismus, um Modularität zu vereinfachen. Bezeichnersprachen bedürfen ebenfalls oft eines solchen Mechanismusses. Dieses Dokument schlägt einen generischen Mechanismus vor, um XML-Dokumente (wie in ihren Information Sets niedergelegt) für die Anwendungen zusammenzufassen, die eine solche Vereinfachung fordern. Die Syntax entspricht vorhandenen XML-Formen: Elemente, Attribute und URI-Verweise.
Die Anforderungen, an denen sich die Entwicklung von XInclude orientieren soll, können im XML Inclusion Proposal, W3C Note vom 23. November 1999 [XInclude] eingesehen werden.
XInclude weicht von den Möglichkeiten eines Verweisaufbaus ab, die in der
XML Linking Language [XLink] beschrieben sind, besonders
von Verweisen mit dem Attributwert show="embed"
. Solche Verweise
haben eine Syntax, die unabhängig vom Medientyp anzeigt, dass ein
Quellmedium grafisch in die Darstellung eines Dokuments eingebunden werden
soll. XLink gibt kein bestimmtes Verarbeitungsmodell an, sondern vereinfacht
nur die Erkennung eines Verweises und die Ermittlung der bezüglichen Metadaten
durch eine übergeordnete Anwendung.
XInclude, auf der anderen Seite, gibt eine Transformation an, die vom Medientypen abhängig ist (XML zu XML). Es bestimmt ein besonderes Verarbeitungsmodell, um Infosets zusammenzufassen. Die XInclude-Verarbeitung geschieht auf einem niedrigeren Level, oft durch einen generischen XInclude-Prozessor, der die erzeugten Informationen einer übergeordneten Anwendung zugänglich macht.
Einfache Knoteninklusion, wie in dieser Spezifikation beschrieben,
unterscheidet sich von der Transklusion, die kontext-spezifische Informationen
wie z.B. style
erhält.
Es gibt zahlreiche Unterschiede zwischen XInclude und XML External Entities [XML], die sie zu ergänzenden Technologien machen.
Die Verarbeitung von externen Entities (wie auch des Rests der DTDs) geschieht beim Parsing. XInclude arbeitet mit Infosets und somit entgegengesetzt zum Parsing.
Die Deklaration externer Entities benötigt ein DTD oder ein internes Subset. Das hat einige Abhängigkeiten für die Inklusion zur Folge, zum Beispiel fordert die Syntax einer DOCTYPE-Deklaration, dass das Dokumentelement benannt ist, in vielen Fällen entgegengesetzt zur Inklusion. Validierende Programme müssen die Definition des gesamten Content Models kennen. XInclude verhält sich entgegengesetzt zur Validation und zum Namen des Dokumentelements.
Externe Entities sind indirekt - ein externes Entity muss deklariert und benannt, und separat aufgerufen werden. XInclude verwendet direkte Verweise. Anwendungen, die XML-Ausgaben inkrementell erzeugen, können davon profitieren, die Inklusionen nicht vorher deklarieren zu müssen.
Die Syntax interner Subsets ist für viele Autoren, die einfache, wohlgeformte XML-Dokumente schreiben möchten, zu unförmig. Die XInclude-Syntax basiert auf bekannten XML-Formen.
XInclude definiert keine Beziehung zur DTD-Verarbeitung. XInclude beschreibt eine Transformation "Infoset-zu-Infoset" und keine Veränderung im Bearbeitungsverhalten von XML 1.0. XInclude definiert keinen Mechanismus zur DTD-Verarbeitung der erzeugten Infosets.
XInclude definiert keine Beziehung zu einem aufgeforsteten Infoset, das durch die Anwendung eines XML-Schemas erzeugt wird. Solch ein erzeugtes Infoset kann als Eingabe-Infoset verwendet werden, bzw. kann so eine Aufforstung als Ergebnis einer angewendeten Inklusion entstehen.
Besondere Inklusionsmechanismen wurden in bestimmten XML-Grammatiken eingeführt. XInclude besitzt einen generischen Mechanismus zur Erkennung und Verarbeitung von Inklusionen und setzt deshalb weniger Programmiererfahrung voraus. Es gewährleistet bessere Performance und weniger Programmcodeabhängigkeit.
[Definition: ] Die Schlüsselworte müssen, nicht dürfen, erforderlich, können, empfehlen und optional in dieser Spezifikation sind zu verstehen, wie in RFC 2119 [IETF RFC 2119] beschrieben.
XInclude definiert einen Namensraum, der mit dem URI http://www.w3.org/1999/XML/xinclude
verbunden ist. Der XInclude-Namensraum enthält ein einziges Element mit dem
lokalen Namen include
. Zur Vereinfachung wird dieses Element
innerhalb dieser Spezifikation als xi:include
bezeichnet.
Das Element xi:include
hat die folgenden Attribute:
parse="text"
gesetzt ist, ist es
eventuell nicht möglich, die Verschlüsselung der Textdatei richtig zu
ermitteln. Das Attribut encoding
gibt an, wie die Quelle
übersetzt werden muss. Der Wert dieses Attributs ist ein EncName wie in
der XML 1.0 Spezifikation, Abschnitt 4.3.3, Regel [81] beschrieben ist.
Das Attribut encoding
wird nicht berücksichtigt, wenn
parse="xml"
gesetzt ist.Attribute aus anderen Namensräumen können vom
Element xi:include
verwendet werden. Unqualified attribute
names
sind für zukünftige Versionen dieser Spezifikation reserviert und müssen von XInclude 1.0 Prozessoren ignoriert werden.
Der Inhalt des Elements xi:include
wird nicht durch diese
Spezifikation vorgegeben.
Das folgende (nicht normative) XML Schema veranschaulicht das Inhaltsmodell
für das Element xi:include
:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xi="http://www.w3.org/2001/XInclude" targetNamespace="http://www.w3.org/2001/XInclude"> <xs:element name="include"> <xs:complexType mixed="true"> <xs:attribute name="href" type="xs:anyURI" use="required"/> <xs:attribute name="parse"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="xml"/> <xs:enumeration value="text"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="encoding" type="xs:string"/> <xs:anyAttribute /> </xs:complexType> </xs:element> </xs:schema> |
Das folgende (nicht normative) DTD-Fragment zeigt eine Beispiel-Deklaration
für das Element xi:include
:
<!ELEMENT xi:include EMPTY> <!ATTLIST xi:include xmlns:xi #FIXED "http://www.w3.org/2001/XInclude" href CDATA #REQUIRED parse (xml|text) "xml" encoding CDATA #IMPLIED > |
Inklusion, wie in diesem Dokument definiert, ist ein bestimmter Typ der 'XML Information Set' [XML Infoset] Transformation.
[Definition: ] Die Ausgangsdatei für die
Inklusionstransformation besteht aus einem Quell-Infoset. [Definition: ] Die
Ausgabe, Ergebnis-Infoset genannt, besteht aus einem neuen
Infoset, welches aus dem Quell-Infoset und den Infosets zusammengesetzt wird,
deren Quellen durch URI-Verweise in xi:include
-Elementen
identifiziert werden. Folglich wird ein Mechanismus zur Auflösung von
URIs vorausgesetzt, der die identifizierten Quellen als Infoset zurückgeben
kann. Wohlgeformte XML-Entities, die keine Infoset-Definition besitzen (z.B.
eine externe Entity-Datei mit mehreren Top-Level-Elementen), liegen außerhalb
des Rahmens dieser Spezifikation, sowohl in Bezug auf die Verwendung als Quell-Infoset als auch in Bezug auf die
Verwendung als Ergebnis-Infoset.
Inklusion wird durch die Anwesenheit von xi:include
-Elementen
im Quell-Infoset angezeigt. [Definition: ] Die Information Items, deren Ort
vom Element xi:include
angezeigt wird, werden Included Items genannt. Das Ergebnis-Infoset ist im Wesentlichen eine Kopie
des Quell-Infoset, in dem alle Include-Elemente durch ihre korrespondierenden
Included Items ersetzt worden sind.
Der Wert des href
-Attributs wird als IURI-Verweis
interpretiert. [Definition: ]Ein internationalisierter
URI-Verweis, oder IURI [IURI], ist ein URI-Verweis, der
direkt Unicode-Zeichen verwendet [Unicode]. IURI
references allow a superset of the characters of fully escaped URI references,
jedoch müssen normal auftauchende Prozentzeichen ersetzt werden, da das
Prozentzeichen das Anfangszeichen für Zeichenketten ist, mit denen andere
Zeichen in URIs und IURIs ersetzt werden.
Der Base URI für relative IURIs ist der Base URI des Elements
xi:include
, wie in XML Base [XML Base]
angegeben ist. [Definition: ]Der IURI, der durch die Auflösung
zur absoluten IURI-Form entsteht, wird die Include Location
genannt.
Der Zeichensatz, der im Attribut href
erlaubt ist, ist der
gleiche wie für
XML, nämlich [Unicode]. Jedoch sind einige
Unicode-Zeichen in
URI-Verweisen nicht erlaubt. Deshalb müssen die nicht
erlaubten Zeichen verschlüsselt und ersetzt werden, damit Software zur
Auflösung von URI-Verweisen in der Lage ist, diese Zeichen zu verarbeiten.
Nicht erlaubte Zeichen sind alle nicht-ASCII-Zeichen, einschließlich den ausgeschlossenen Zeichen aus Abschnitt 2.4 von [IETF RFC 2396], außer dem Zahlenzeichen (#) und dem Prozentzeichen (%), sowie den eckigen Klammern, die in [IETF RFC 2732] wieder erlaubt werden. Nicht erlaubte Zeichen werden wie folgt ersetzt:
Jedes nicht erlaubte Zeichen wird in UTF-8 [IETF RFC 2279], in ein Byte oder mehrere Bytes, umgewandelt.
Alle Bytes, die einem nicht erlaubten Zeichen zugeordnet sind, werden durch den für URIs vorgeschriebenen Eresetzungsmechanismus ersetzt (Wandlung in %HH, wobei HH der hexadezimale Wert für den Byte-Wert ist).
Das originale Zeichen wird durch die erzeugte Zeichenkette ersetzt.
Ist parse="xml"
gesetzt, wird die Include Location aufgelöst, die Quelle wird
geladen und ein Infoset wird erzeugt.
Anmerkung: Die Einzelheiten, wie ein Infoset erzeugt wird, bleiben absichtlich unspezifiziert, um Flexibilität in Implementationen zu erlauben und um zu vermeiden, ein bestimmtes Verarbeitungsmodell für Komponenten der XML-Architektur zu definieren. Einzelheiten zur Validierung über eine DTD oder ein XML Schema werden von dieser Spezifikation zum Beispiel nicht vorgeschrieben.
Anmerkung: Die Zeichenverschlüsselung der einschließenden und der eingeschlossenen Quelle kann unterschiedlich sein. Das beeinflusst jedoch nicht das daraus hervorgehende Infoset, muss aber eventuell bei jeder späteren Serialisation berücksichtigt werden.
[Definition: ] xi:include-Elemente in diesem Infoset werden rekursiv verarbeitet, um das Acquired Infoset zu erhalten.
Quellen, die aus irgendeinem Grund nicht zugänglich sind (weil die Quelle vielleicht nicht existiert, Verbindungsschwierigkeiten oder Sicherheitsbeschränkungen den Zugriff verhindern, auf das URI-Schema nicht zugegriffen werden kann oder ein Syntaxfehler in einem XPointer besteht), resultieren in einem Fehler. Quellen, die nicht-wohlgeformtes XML enthalten, resultieren in einem Fehler.
Bei einer Verarbeitung als XML wird ein Teil des URI-Verweises als XPointer [XPointer] interpretiert, unabhängig vom Medientyp der Quelle. Der XPointer gibt eine untergeordnete Quelle als Ziel der Inklusion an.
Die Included Items werden aus dem Acquired Infoset wie folgt gewonnen:
Eine Include Location kann das Document Information Item identifizieren (zum Beispiel einen URI-Verweis ohne einen XPointer, oder ein XPointer der genau auf die Dokumentenwurzel zeigt). In diesem Fall sind die Included Items die [children] des Document Information Items des betreffenden Acquired Infosets, außer für das Document Type Declaration Information Item-Kind, sofern eines existiert.
Bemerkung: Die Spezifikation XML Information Set trägt keine Vorsorge zur Erhaltung von Leerzeichen außerhalb des Dokumentelements. XInclude sieht keine weitergehende Möglichkeit vor, diese Leerzeichen zu erhalten.
Eine Include Location mit einem XPointer kann Unterquellen identifizieren, die aus mehr als einem Knoten bestehen. In diesem Fall ist die Zusammenfassung der Included Items die Zusammenfassung der Information Items des Acquired Infoset, abhängig von den Knoten, auf die vom XPointer verwiesen wird, und zwar in der Reihenfolge, in der sie im Acquired Infoset erscheinen.
Ist das Dokumentelement (Top Level Element) im Quell-Infoset ein
xi:include
-Element, ist es ein Fehler zu versuchen,
es durch mehr als ein einzelnes Element zu ersetzen.
Eine Include Location mit einem XPointer kann eine Bereichszusammenfassung identifizieren, die einen Bereich oder mehrere Bereiche repäsentiert.
Jeder Bereich entspricht einer Zusammenfassung von Information Items in dem Acquired Infoset. [Definition: ] Ein Information Item wird bezeichnet als von einem Bereich ausgewählt, wenn es (in der Dokumentreihenfolge) nach dem Startpunkt des Bereichs und vor dem Endpunkt des Bereichs auftaucht. [Definition: ] Ein Information Item wird bezeichnet als von einem Bereich teilweise ausgewählt, wenn es nur den Startpunkt des Bereichs oder den Endpunkt des Bereichs enthält. Laut Definition kann ein Charakter Information Item nicht teilweise ausgewählt sein.
Der Satz der Included Items ist die Gesamtheit, in Dokumentreihenfolge mit entfernten Duplikaten, der durch den Bereich ausgewählten oder teilweise ausgewählten Information Items. Die [children]-Eigenschaft der ausgewählten Information Items wird nicht verändert. Die [children]-Eigenschaft der teilweise ausgewählten Information Items ist der Satz der Information Items die entweder ausgewählt oder teilweise ausgewählt sind, und so weiter.
Eine Include Location, die einen XPointer enthält, kann einen Elementknoten, einen Kommentarknoten oder einen Verarbeitungsanweisungsknoten indentifizieren, beziehungsweise ein Element Information Item, ein Comment Information Item oder ein Processing Instruction Information Item repräsentieren. In diesem Fall besteht der Satz der Included Items aus dem Information Item des korrespondierenden Element-, Kommentar- oder Verarbeitungsanweisungs-Knotens in dem Acquired Infoset.
Eine Include Location, die einen XPointer enthält, könnte einen Attributknoten oder einen Namensraumknoten identifizieren. Der Versuch, einen solchen Knoten zu inkludieren, resultiert in einem Fehler.
Wenn ein xi:include
-Element rekursiv
verarbeitet wird, wird es als Fehler angesehen, wenn ein anderes
xi:include
-Element mit einer
Include Location
verarbeitet wird, die schon in der Inklusionskette verarbeitet wurde.
Mit anderen Worten, das Folgende ist erlaubt:
Ein xi:include
-Element kann
auf das Dokument verweisen, das dieses Include-Element enthält, wenn
parse="text"
gesetzt ist.
Ein xi:include
-Element kann
einen anderen Teil der gleichen lokalen Quelle identifizieren.
Zwei nicht verschachtelte xi:include
-Elemente können eine Quelle identifizieren, die selbst ein
Include-Element enthält.
Das Folgende ist nicht erlaubt:
Ein xi:include
-Element, das auf sich selbst oder
irgendeinen seiner Nachfahren zeigt, wenn parse="xml"
gesetzt ist.
Ein xi:include
-Element, das auf irgendein
Include-Element oder Nachfahren davon zeigt, die bereits in einer
höheren Ebene verarbeitet wurden.
Wenn parse="text"
gesetzt wird, wird die Include Location aufgelöst und die Quelle wird
übertragen. Diese Quelle wird als reiner Text behandelt und in einen Satz
von Character Information Items konvertiert ohne den Versuch, diese
Quelle als XML zu verarbeiten. Diese Eigenschaft ermöglicht die
Inkludierung von XML-Arbeitsbeispielen und anderen Text-basierten
Formaten.
Die Verschlüsselung einer solchen Quelle wird erkannt durch:
externe Verschlüsselungsinformation, sofern verfügbar, ansonsten
wenn der Medientyp der Datei text/xml
, bzw.
application/xml
ist oder die Konventionen für
text/*+xml
oder application/*+xml
erfüllt werden, wie in XML Medien Typen
[IETF RFC 3023] beschrieben ist,
die Verschlüsselungserkennung, wie in XML 1.0 angegeben ist,
ansonsten
den Wert des Attributs encoding
, sofern einer existiert,
ansonsten
UTF-8.
Byte-Folgen außerhalb des erlaubten Verschlüsselungsbereichs resultieren in einem Fehler. Zeichen, die nicht innerhalb eines XML-Dokuments erlaubt sind, resultieren ebenfalls in einem Fehler.
[Definition: ] Ein Zeichenbereich (der ausgewählte Bereich) kann durch einen Fragment Identifier identifiziert werden. Die Syntax des Fragment Identifiers wird nach der Syntax für Fragment Identifier für den Medientyp text/plain interpretiert. Ist kein Fragment Identifier vorhanden, enthält der ausgewählte Bereich alle Zeichen in dem Dokument.
Beachte: Es gibt zur Zeit keinen Standard, der Fragment Identifier für den Medientyp text/plain definiert.
Die Zeichen im ausgewählten Bereich werden in Included Items konvertiert durch die Erzeugung eines Charakter Information Item, dessen [charakter code] auf den Zeichencode gesetzt wird, der das Zeichen laut ISO 10646 repräsentiert, und das [element content whitespace] wird auf false gesetzt.
Gemäß dem Character Model [Character Model], sofern das Textformat eine Unicode-Verschlüsselung ist, muss der XInclude-Prozessor die Inklusion verweigern, wenn der Text im ausgewählten Bereich nicht normalisiert ist. Sollen Zeichen von einer anderen Verschlüsselung in Unicode-Verschlüsselung transformiert werden, muss ein normalisierender Transcoder verwendet werden.
Das Ergebnis-Infoset ist eine Kopie des Quell-Infosets, in dem jedes
xi:include
-Element wie folgt ersetzt wird:
Das Information Item für das xi:include
-Element ist
gefunden. [Definition: ] Die [parent]-Eigenschaft
dieses Items bezieht sich auf ein Information Item, das Include Parent genannt wird. Die
[children]-Eigenschaft des Include
Parent wird verändert, indem das xi:include
-Element
Information Item durch die Included Items
ersetzt wird. Die [parent]-Eigenschaft eines jeden Included Item
wird auf Include Parent gesetzt.
Interne Dokumentverweise innerhalb von xi:include
-Elementen
müssen gegen das Quell-Infoset aufgelöst werden.
Die Folge davon ist, dass die Reihenfolge, in der die
xi:include
-Elemente
verarbeitet werden, das Ergebnis nicht beeinflusst.
Im folgenden Beispiel zeigt die zweite Inklusion immer auf das erste
xi:include
-Element und nicht auf sich selbst, unabhängig von der
Reihenfolge, in der die Inklusionen verarbeitet werden. Folglich sind zwei
Kopien von something.xml
das Ergebnis der Inklusion, und es
wird kein Inklusionsschleifenfehler erzeugt.
<x xmlns:xinclude="http://www.w3.org/2001/XInclude"> <xi:include href="something.xml"/> <xi:include href="#xmlns(xi=http://www.w3.org/2001/XInclude) xpointer(x/xi:include[1])" parse="xml"/> </x> |
Jedes Unparsed Entity Information Item, das in der [references]-Eigenschaft eines Attributs der Included Items auftaucht, wird zu der [unparsed entities]-Eigenschaft des Document Information Items des Quell-Infosets hinzugefügt, sofern es kein Duplikat eines existierenden Mitglieds ist.
Unparsed Entity Items mit gleichen Eigenschaften in Bezug auf [name], [system identifier], [public identifier], [declaration base URI], [notation name] und [notation] werden als Duplikate betrachtet. Eine Anwendung kann auch durch die Erkennung anderer Eigenschaften feststellen, dass Unparsed Entities Duplikate sind. Zum Beispiel, wenn der URI gleich ist, der durch die Kombination von System Identifier und Deklaration Base URI entsteht.
Es ist möglich, dass die entstehende [unparsed entities]-Eigenschaft Unparsed Entity Information Items mit dem gleichen Namen enthält. Diese können mit Hilfe der [references]-Eigenschaft des Attribute Information Item, das auf dieses Unparsed Entity verweist, auseinander gehalten werden. Die Serialisation eines solchen Ergebnis-Infoset kann anwendungsspezifische Eingriffe erfordern (zum Beispiel, Umbenennung).
Jedes Notation Information Item, das in der [references]-Eigenschaft eines Attributs der Included Items auftaucht, wird zu der [notations]-Eigenschaft des Document Information Item des Quell-Infosets hinzugefügt, sofern es nicht ein Duplikat eines existierenden Mitglieds ist. Ebenso wird jede Notation hinzugefügt, die von einem Unparsed Entity referenziert wird, das wie in Unparsed Entities beschrieben, hinzugefügt wurde, es sei denn, es handelt sich um ein Duplikat.
Notation Items mit den gleichen Eigenschaften in Bezug auf [name], [system identifier], [public identifier] und [declaration base URI] werden als Duplikate angesehen. Eine Anwendung kann auch durch die Erkennung anderer Eigenschaften feststellen, dass Notationen Duplikate sind. Zum Beispiel, wenn der URI gleich ist, der durch die Kombination von System Identifier und Deklaration Base URI entsteht.
Es ist möglich, dass die entstehende [notations]-Eigenschaft [notations] mit dem gleichen Namen enthält. Diese können mit Hilfe der [references]-Eigenschaft auseinander gehalten werden. Die Serialisation eines solchen Ergebnis-Infoset kann anwendungsspezifische Eingriffe erfordern (zum Beispiel, Umbenennung).
Als eine Infoset-Transformation arbeitet XInclude mit der logischen Struktur eines XML-Dokuments, nicht mit ihrer Text-Serialisation. Alle anderen Eigenschaften eines Information Items, die nicht von diesem Proposal modifiziert werden, bleiben bei der Inklusion erhalten.
Bemerkung: Eigenschaften, die Merkmale über Vorfahren, Nachfahren, usw. (zum Beispiel die PSVI [validity]-Eigenschaft) beschreiben, werden eventuell nicht durch die Inklusion eines Dokumentteils validiert. Diese Spezifikation schreibt nicht vor, wie Prozessoren solche Eigenschaften behandeln sollten.
Bemerkung: Die Attribute
xml:lang
undxml:space
werden nicht gesondert von XInclude verarbeitet.
Die [in-scope namespaces]-Eigenschaft stellt sicher, dass der Namensraum bei der Inklusion erhalten bleibt. Jedoch beschreibt die [namespace attributes]-Eigenschaft nach der Inklusion eventuell nicht alle Namensraum-Deklarationen, die nötig sind, um das Ergebnis zu serialisieren. Wenn das Ergebnisinfoset serialisiert wird, können zusätzliche Namensraum-Deklarationen notwendig werden.
Zum Beispiel, ergibt das folgende Dokument:
<foo xmlns:x="uri1"> <xi:include href="common.xml#xpointer(a/b)" xmlns:xi="http://www.w3.org/2001/XInclude"/> </foo> |
mit einem Knoten aus common.xml inkludiert:
<a xmlns:x="uri2"> <b> <x:a/> </b> </a> |
ein Dokument, das so serialisiert werden könnte:
<foo xmlns:x="uri1"> <b xmlns:x="uri2"> <x:a/> </b> </foo> |
Achtung, die Namensraum-Deklaration xmlns:x="uri2"
wurde während der Serialisation hinzugefügt, und
nicht vom XInclude-Prozessor der
[namespace attributes]-Eigenschaft des Elements b
zugeordnet. Wird dieses Infoset serialisiert und dann
zurückverarbeitet, kann das
entstehende Infoset von dem Infoset, das aus der
Inklusionsverarbeitung entstanden ist, in der Form abweichen, dass die
[namespace attributes]-Eigenschaft die Addition dieser
Attribute wiederspiegelt.
Die Serialisation des Ergebnis-Infosets und besonders die Anordnung und Form von Namensraum-Deklarationen, wird von dieser Spezifikation nicht vorgeschrieben.
Die Eigenschaft des Base URI des Acquired Infosets wird durch die
Zusammenführung des Infosets nicht geändert, und bleibt nach der Verarbeitung
unverändert. So werden relative URI-Verweise im Included Infoset zum gleichen
URI aufgelöst, auch wenn sie eventuell in ein Dokument mit einer anderen Base
URI inkludiert wurden. Ein serialisiertes Ergebnis-Infoset muss eventuell
xml:base
-Attribute hinzufügen, um diesen Umstand anzuzeigen.
Ein Element Information Item ist konform zu dieser Spezifikation, wenn es die strukturellen Anforderungen für Include-Elemente erfüllt, die in dieser Spezifikation definiert sind. Diese Spezifikation legt DTDs oder XML Schemas keine besonderen Zwänge auf; die Konformität bezieht sich nur auf Elemente und Attribute.
Eine Anwendung ist konform zu XInclude, wenn sie:
XML 1.0, XML Namespaces, das XML Information Set, und XML Base unterstützt
die obligatorischen Bedingungen befolgt (muss), die in dieser Spezifikation festgeschrieben sind und alle optionalen Bedingungen (kann), die sie befolgen möchte, so unterstützt, wie es vorgeschrieben ist
Markup-Konformitätstests durchführt, entsprechend allen Konformitätsrichtlinien, die in dieser Spezifikation genannt sind.
Diese Spezifikation ist konform zu XML Information Set [XML Infoset]. Die folgenden Information Items müssen im Quell-Infoset vorhanden sein, um eine korrekte Verarbeitung zu ermöglichen:
Document Information Items mit den Eigenschaften [children] und [base URI].
Element Information Items mit den Eigenschaften [namespace name], [local name], [children], [attributes], [base URI] und [parent].
Attribute Information Items mit den Eigenschaften [namespace name], [local name] und [normalized value].
Information Items und Eigenschaften des Quell-Infosets werden etweder in Übereinstimmung mit dieser Spezifikation verarbeitet, oder durchlaufen die Inklusionstransformation unverändert. Zusätzlich kann die XInclude-Verarbeitung folgende Information Items im Ergebnis erzeugen:
Character Information Items mit den Eigenschaften [character code], [element content whitespace] und [parent].
Das folgende XML-Dokument enthält ein xi:include-Element, das zu einem externen Dokument zeigt.
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <p>120 Mz ist ausreichend für einen durchschnittlichen Benutzer.</p> <xi:include href="disclaimer.xml"/> </document> |
disclaimer.xml enthält:
<?xml version='1.0'?> <disclaimer> <p>Die hier dargestellten Meinungen sind die eines Individuums und sollten nicht als offizielle Aussage dieser Organisation interpretiert werden.</p> </disclaimer> |
Das resultierende Infoset, das aus der Auflösung der Inklusionen in diesem Dokument entsteht, ist das gleiche wie im folgenden Dokument:
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <p>120 Mz ist ausreichend für einen durchschnittlichen Benutzer.</p> <disclaimer> <p>Die hier dargestellten Meinungen sind die eines Individuums und sollten nicht als offizielle Aussage dieser Organisation interpretiert werden.</p> </disclaimer> </document> |
Das Folgende stellt das Ergebnis einer Inklusion dar, die einen Bereich inkludiert, der von einem XPointer angegeben wird.
<?xml version='1.0'?> <document> <p>Der relevante Auszug ist:</p> <zitat> <include xmlns="http://www.w3.org/1999/XML/xinclude" href="quell.xml#xpointer(string-range(kapitel/p[1],'Satz 2') /range-to (string-range(kapitel/p[2]/i,'3.',1,7)))"/> </zitat> </document> |
quell.xml enthält:
<kapitel> <p>Satz 1. Satz 2.</p> <p><i>Satz 3. Satz 4.</i> Satz 5.</p> </kapitel> |
Das resultierende Infoset, das aus der Auflösung der Inklusionen in diesem Dokument entsteht, ist das gleiche wie im folgenden Dokument:
<?xml version='1.0'?> <document> <p>Der relevante Auszug ist:</p> <zitat> <p>Satz 2.</p> <p><i>Satz 3.</i></p> </zitat> </document> |
Das folgende XML-Dokument inkludiert ein Arbeitsbeispiel in ein Dokument.
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <p>Das Folgende ist der Quelltext der Datei "data.xml":</p> <beispiel><xi:include href="data.xml" parse="text"/></beispiel> </document> |
data.xml enthält:
<?xml version='1.0'?> <data> <item><![CDATA[Brooks & Sheilds]]></item> </data> |
Das resultierende Infoset, das aus der Auflösung der Inklusionen in diesem Dokument entsteht, ist das gleiche wie im folgenden Dokument:
<?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <p>Das Folgende ist der Quelltext der Datei "data.xml":</p> <beispiel><?xml version='1.0'?> <data> <item><![CDATA[Brooks & Sheilds]]></item> </data></beispiel> </document> |