Der Baum als Abbild eines Infosets oder PSVI
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)
Vereinfacht wurde gesagt, dass ein XML-Dokument beim Einlesen durch den XML-Parser in eine baumähnliche Form gebracht wird. Dies ist jedoch erst die zweite bzw. dritte Stufe. Vielmehr setzt der Parsing-Vorgang das Dokument zunächst in eine für eine Folgeanwendung verwertbare Sammlung von Informationen um, das Infoset. Innerhalb des Infosets sind die Bestandteile des geparsten Dokuments als Information-Item vertreten. Ein Element beispielsweise in Form eines Element-Information-Items.
Eigenschaften des Infosets
Teil dieses Infosets sind naheliegenderweise alle im geparsten XML-Dokument enthaltenen Informationen, soweit diese als »relevant« (Anmerkung: Hierüber gehen die Meinungen allerdings bereits auseinander. Sollen beispielsweise Kommentare als relevante Informationen betrachtet werden oder nicht?) angesehen werden. Darüber hinaus einbezogen sind (in Form sogenannter Properties) noch zusätzliche Informationen über die einzelnen Information-Items: Hierzu gehören dessen Basis-URI, Datentyp, Name (für Elemente und Attribute), Informationen über die Position im Dokument (Parent- und Child-Properties) und weitere Eigenschaften. Das Infoset selbst ist jedoch noch kein Baum. Dieser und die in ihm versammelten Knoten werden aus dem Infoset erst konstruiert.
Das Post Schema Validation Infoset – PSVI
Ist für den Parser ein XML Schema-Dokument zugänglich und ist dieser in der Lage, es auch zu verarbeiten, so wird das Infoset validiert. Mit anderen Worten wird zum einen die Gültigkeit des Dokuments geprüft und zum anderen mit den Informationen jeweils ein Schema-Datentyp verknüpft (type annotation). Hierbei kann es sich um einen Basistyp oder um einen benutzerdefinierten Typ im Rahmen des Schemas handeln. Das Ergebnis dieser Validierung ist ein sogenanntes PSVI (Post Schema Validation Infoset).
Konstruktion der Knoten des Baums aus dem Infoset
Ausgehend entweder von einem Infoset (ohne erfolgte Validierung des Dokuments) oder von einem PSVI (mit Validierung gemäß eines Schemas) erfolgt nun die »Konstruktion« der Knoten und des aus ihnen zusammengesetzten Baums. Der wesentliche Unterschied im Ergebnis besteht in den mit den Knoten jeweils verknüpften Datentypen.
Ist ein Knoten aus dem »gewöhnlichen« Infoset konstruiert, so ist sein Datentyp meist unspezifisch. So hat beispielwiese ein aus dem Infoset stammender Elementknoten grundsätzlich den XML Schema-Typ xs:anyType. Für Attributknoten ist die Lage etwas komplexer. Hier kann der unspezifische XPath-Typ xdt:untypedAtomic zugeteilt werden, jedoch auch ein anderer, wenn z. B. das Attribut in einer DTD als ID, IDREF, NMTOKEN oder Ähnliches deklariert wurde.
Liegt dem Baum ein PSVI zugrunde, so besitzt jeder Element- und Attributknoten – sofern er validiert wurde – ein validity-Property. Dieses kann die Werte valid, invalid oder notKnown annehmen. Elementknoten erhalten, sofern sie valid sind, den entsprechenden Schematyp gemäß des Schemas, andernfalls xs:anyType. Analog wird für Attributknoten verfahren.
Weitere Informationen zum Datenmodell:
Die offizielle Beschreibung des XPath-Datenmodells sowie der Konstruktion von Knoten aus Infoset und PSVI befindet sich in der W3C-Spezifikation XQuery 1.0 and XPath 2.0 Data Model (XDM).
<< 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