Kanonisches XML

(Auszug aus "Python & XML" von Christopher A. Jones & Fred L. Drake, Jr.)

Der Begriff Kanonisierung wurde ursprünglich aus seinem alten Kontext »geborgt«, um anzugeben, daß eine Struktur einer Dokumentinstanz gleich der einer Master- oder allgemein akzeptierten Struktur des Dokuments ist. Kanonisierung (Canonicalization) wird manchmal kurz als C14N bezeichnet, was ähnlich zum häufiger gebrauchten I18N für Internationalization (Internationalisierung) ist.

Kanonisches XML ist eine im Entstehen begriffene W3C-Empfehlung, die es Ihnen ermöglicht, direkt zu sehen, ob eine physische Darstellung eines Dokuments äquivalent zu einer anderen physischen Darstellung des gleichen Dokuments ist, um so zu bestimmen, ob beide »kanonisch« äquivalent sind. In diesem Abschnitt erkunden wir einige der technischen Eigenschaften von Kanonischem XML, um besser zu verstehen, wie es für Ihre Bedürfnisse anzuwenden ist.

Das Datenmodell von Kanonischem XML

Um mit dem Prozeß der Konvertierung eines Dokuments in kanonische Form zu beginnen, müssen Sie oder eher Ihr Prozessor für Kanonisches XML mit irgendeiner Form von XML beginnen, mit der er etwas anfangen kann. Daher sollte Ihr erster Parameter für einen kanonischen Übersetzer eine XPath-Knotenmenge sein oder ein serialisiertes XML-Dokument. Der zweite Parameter ist ein Boolescher Wert, der angibt, ob Kommentare analysiert werden sollen.

Im Falle einer Knotenmenge muß diese normalisierte Zeilenvorschübe haben, normalisierte Attributwerte, durch ihre Zeichendaten ersetzte CDATA-Abschnitte sowie aufgelöste Zeichen- und geparste Entity-Referenzen. Mit anderen Worten: Jeder Knoten muß »durchgekocht« sein. Weder verlorene Entities noch überflüssiger Leerraum ist erlaubt. Der gesamte Leerraum innerhalb eines Wurzelelements muß beibehalten bleiben, mit Ausnahme von solchem zur Normalisierung von Zeilenbegrenzern. Der gesamte Ansatz sieht danach aus, als ob das Dokument flachgeklopft und auseinandergezogen wird wie ein Pizza-Teig kurz vor dem Backen.

Dokument-Reihenfolge

Obwohl Kanonisches XML auf XPath aufsetzt, erfordert es die Beachtung einiger Regeln bei den XPath-Knotenmengen, die an einen Prozessor von Kanonischem XML übergeben werden.

  1. Die Namensraum- und Attributknoten eines Elements müssen dem Element folgen, aber vor allen Kindelementen stehen.
  2. Namensraumknoten müssen vor Attributknoten existieren.
  3. Namensraumknoten für ein Element sind lexikalisch nach ihren lokalen Namen sortiert.
  4. Attributknoten für ein Element sind lexikalisch mit dem Namensraum-URI als primärem und dem lokalen Namen als sekundärem Schlüssel sortiert.

Kanonische XML-Struktur

Kanonisches XML braucht keine XML-Deklaration und DTDs mehr und normalisiert auch Leerraum außerhalb des Wurzelelements. Abgekürzte leere Elemente (in der Art <element-name/>) werden zu Paaren von Start- und End-Tags konvertiert (<element-name></element-name>). Namensräume und Attribute dürfen lexikalisch umgeordnet werden, um mit den kanonischen Erwartungen übereinzustimmen, die im obigen Abschnitt »Dokument-Reihenfolge« beschrieben wurden. Zusätzlich zu diesen Modifikationen ersetzt eine kanonische Darstellung CDATA-Abschnitte durch ihre tatsächlichen Zeichen und ersetzt Zeichenreferenzen, wenn nötig. Attributwerte und Text haben ebenfalls spezielle Zeichen, die durch Referenzen ersetzt werden.

Kanonisches XML ist ziemlich neu, und es gibt noch keine bedeutenden Mengen an Python-Software für die Verarbeitung von Kanonischem XML. Die Vision hinter Kanonischem XML ist verschwommen, aber es ist eine Methode, zwei Instanzen zu prüfen (unabhängig von DTD oder Schema) und sie wie toten Fisch zu sezieren, um zu sehen, ob sie das gleiche Skelett haben. Version 0.7 von PyXML wird die Darstellung von XML in kanonischer Form unterstützen. (Kanonisches XML kann eine gewisse Rolle bei digitalen Signaturen von XML-Dokumenten spielen, da es viele syntaktisch verschiedene XML-Dokumente mit gleichem semantischem Inhalt geben kann. – Anm. d. Ü.)

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Python & XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2002 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Python & XML" 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.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de