Kanonischer XML
Kanonischer XML ist ein Normale Form von Xml, um einen relativ einfachen Vergleich von Paaren von XML -Dokumenten für die Äquivalenz zu ermöglichen; Zu diesem Zweck beseitigt die kanonische XML-Transformation nicht zwingende Unterschiede zwischen den Dokumenten. Jedes XML -Dokument kann in kanonische XML konvertiert werden.
Zum Beispiel ermöglicht XML, dass Whitespace an verschiedenen Punkten innerhalb von Start-Tags auftritt und Attribute in beliebiger Reihenfolge angegeben werden. Solche Unterschiede werden selten, wenn sie jemals zur Vermittlung von Bedeutung verwendet, und daher werden diese Formen im Allgemeinen als gleichwertig angesehen:
<p class = "a" Secure = "1">
<p Secure = "1" class = 'a'>
Bei der Konvertierung eines beliebigen XML -Dokuments in kanonische XML werden Attribute in einer normativen Reihenfolge (alphabetisch mit dem Namen) sowie mit normativem Abstand und Zitieren (allerdings mit allen Namespace -Deklarationen vor, die regelmäßigen Attributen vorhanden sind, und den Namensatchungsattribute eher nach dem Namenspace als Präfix sortiert werden oder qualifizierter Name). Somit würde die obige zweite Form in die erste konvertiert.
Canonical XML gibt eine Reihe anderer Details an, von denen einige sind:
- das UTF-8 Codierung wird verwendet
- Linienlieder werden mit dem dargestellt Neue Zeile Charakter 0x0a
- Whitespace in Attributwerten wird normalisiert
- Entitätsreferenzen und nicht spezielle Charakterreferenzen werden erweitert
- CDATA Abschnitte werden durch ihren Charakterinhalt ersetzt
- Leere Elemente werden als Start-/Endpaare codiert und verwenden nicht die spezielle Syntax mit leeren Elementen
- Standardattribute werden explizit gemacht
- Überflüssige Namespace -Deklarationen werden gelöscht
Laut dem W3c, wenn zwei Xml Dokumente haben die gleiche kanonische Form, dann sind die beiden Dokumente innerhalb des angegebenen Anwendungskontexts logisch äquivalent (mit Ausnahme von Einschränkungen in einigen ungewöhnlichen Fällen).
In einem speziellen Kontext kümmern sich jedoch die Benutzer jedoch möglicherweise um spezielle Semantik, die über die generische logische Äquivalenz hinausgehen, mit der kanonisches XML zugeordnet ist. Zum Beispiel a Steganographie Das System könnte Informationen in einem XML -Dokument verbergen, indem sie unterschiedliche Whitespace, Attributangebote und Reihenfolge, die Verwendung von hexadezimalen vs. dezimalen numerischen Zeichenreferenzen usw. verbergen. Die Konvertierung einer solchen Datei in kanonische XML würde offensichtlich diese spezialisierte Semantik verlieren. Andererseits können XML-Dateien, die sich in der Verwendung von oberen vs. unteren Fällen unterscheiden oder die archaisch gegen moderne Schreibweise und so weiter verwenden, für bestimmte Zwecke als äquivalent angesehen werden. Solche Kontexte liegen außerhalb des Rahmens des kanonischen XML.