Zum Inhalt springen

„Canonical XML“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Hic et nunc verschob Seite Portal Diskussion:Canonical XML nach Canonical XML ohne dabei eine Weiterleitung anzulegen: Nachimport
K Weblinks: https
 
(17 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Canonical XML''' bezeichnet die [[kanonische Form]] von [[Extensible Markup Language|XML]]-Dokumenten, welche die Vergleichbarkeit zweier solcher Dokumente vereinfachen soll. Aus diesem Grund entfernt die Canonical XML-Transformation unbedeutende Unterschiede zwischen den Dokumenten. Jedes XML-Dokument kann in die kanonische Form (Canonical XML) gebracht werden.
{{self-published|date=October 2011}}
'''Canonical XML''' is a [[Canonical form|normal form]] of [[XML]], intended to allow relatively simple comparison of pairs of XML documents for equivalence; for this purpose, the Canonical XML transformation removes non-meaningful differences between the documents. Any XML document can be converted to Canonical XML.


Beispielsweise erlaubt XML das Auftreten von Leerzeichen an bestimmten Stellen innerhalb des Start-[[Tag (Informatik)|Tags]], und [[Attribut (Auszeichnungssprache)|Attribute]] können in beliebiger Reihenfolge angegeben werden. Solche Unterschiede werden, wenn überhaupt, sehr selten mit einer Bedeutung versehen. Aus diesem Grund werden die folgenden beiden Formen allgemein als äquivalent angesehen:
For example, XML permits whitespace to occur at various points within start-tags, and attributes to be specified in any order. Such differences are seldom if ever used to convey meaning, and so these forms are generally considered equivalent:
<syntaxhighlight lang="xml">
<p class="a" secure="1">


&lt;p class="a" secure="1">
<p secure = "1"
class='a' >
</syntaxhighlight>


Im Zuge der Umwandlung eines beliebigen XML-Dokumentes in kanonisches XML werden die Attribute ihrer nominativen Ordnung (ihrem Namen nach alphabetisch) sortiert und die Leerstellen und Anführungszeichen werden vereinheitlicht. Somit würde die zweite Form in die erste Form umgewandelt werden.
&lt;p secure = "1"
class='a' >


Canonical XML spezifiziert eine Reihe anderer Details, von denen einige hier aufgeführt werden:
In converting an arbitrary XML document to Canonical XML, attributes are encoded in a normative order (alphabetical by name), and with normative spacing and quoting. Thus, the second form above would be converted to the first.
* die [[UTF-8]]-Zeichenkodierung wird verwendet,
* Zeilenenden werden durch das Zeichen 0x0A (New Line = [[Zeilenvorschub]]) repräsentiert,
* Leerzeichen innerhalb der Attributwerte werden vereinheitlicht,
* Entitäts-Referenzen werden aufgelöst,
* als [[CDATA]] markierte Abschnitte werden aufgelöst,
* leere Elemente werden mit Start- und Endtags <code><leer></leer></code> kodiert, nicht durch Verwendung als Leertags <code><nowiki><leer/></nowiki></code>,
* Standardattribute werden explizit angegeben,
* überflüssige Namensraum-Deklarationen werden gelöscht.


Ein Dokument in Canonical XML zu konvertieren, ist [[Idempotenz|idempotent]]. Das bedeutet, dass sich bei der ersten Umwandlung die dargestellten Zeichen im Vergleich zum Original ändern, jedoch bei weiteren Umwandlungen keine weiteren Änderungen vorgenommen werden.
Canonical XML specifies a number of other details, some of which are:


Laut dem [[World Wide Web Consortium|W3C]] können zwei Dokumente innerhalb des gegebenen Anwendungskontextes als logisch äquivalent angesehen werden, wenn diese die gleiche kanonische Form haben (außer Begrenzungen in Bezug auf einige selten vorkommende Fälle).
* the [[UTF-8]] encoding is used
* line-ends are represented using the character 0x0A
* whitespace in attribute values is normalized
* entity references are expanded
* CDATA marked sections are not used
* empty elements are encoded as start/end pairs, not using the special empty-element syntax
* default attributes are made explicit
* superfluous namespace declarations are deleted


Allerdings könnten Nutzer in speziellen Umgebungen Wert auf spezielle Semantiken legen, welche sich außerhalb der allgemeinen logischen Gleichheit befinden, mit der Canonical XML assoziiert ist. Beispielsweise könnte ein [[Steganographie]]-System in einem XML-Dokument durch Veränderung von Leerzeichen, Anführungszeichen von Attributen und Anordnung dieser, die Verwendung von hexadezimalen vs. dezimalen Zeichenreferenzen usw. Informationen verbergen. Offensichtlich gehen durch die Umwandlung einer solchen Datei in Canonical XML diese speziellen Semantiken verloren. Allerdings können auch XML-Dateien, die sich in der Verwendung von Groß- vs. Kleinschreibung unterscheiden, bzw. solche, die alte vs. neue Rechtschreibung verwenden usw., als äquivalent für bestimmte Zwecke angesehen werden. Solche Kontexte sind außerhalb des Rahmens von Canonical XML.
Converting a document to Canonical XML is [[idempotent]]. That is, the first conversion usually will result in a different string of characters than the original, but repeated conversions will make no further changes.


== Software ==
According to the [[W3C]], if two [[XML]] documents have the same canonical form, then the two documents are logically equivalent within the given application context (except for limitations regarding a few unusual cases).
Eine Implementierung von Canonical XML findet sich im Programm xmllint, das Bestandteil von [[Libxml2|gnome libxml2]] ist und daneben für Microsoft Windows verfügbar ist.


Beispielanwendung:
However, in a special context users might care about special semantics beyond the generic logical equivalence with which Canonical XML is associated. For example, a [[steganography]] system could conceal information in an XML document by varying whitespace, attribute quoting and order, the use of hexadecimal vs. decimal numeric character references, and so on. Obviously converting such a file to Canonical XML would lose those specialized semantics. On the other hand, XML files that differ in their use of upper- vs. lower-case, or that use archaic versus modern spelling, and so on, might be considered equivalent for certain purposes. Such contexts are beyond the scope of Canonical XML.


<syntaxhighlight lang="bash">
==See also==
xmllint --c14n SomeXml.xml > CanonicalVersionOf_SomeXml.xml
* [[XML Signature]]
</syntaxhighlight>


==External links==
== Siehe auch ==
* [[XML Signature]]
*[http://www.w3.org/TR/xml-c14n W3C Recommendation, Canonical XML Version 1.0, 15 March 2001]
*[http://www.w3.org/TR/xml-exc-c14n/ W3C Recommendation, Exclusive XML Canonicalization Version 1.0, 18 July 2002]


== Weblinks ==
{{markup-languages-stub}}
* [https://www.w3.org/TR/xml-c14n/ W3C Empfehlung, Canonical XML Version 1.0, 15. März 2001]
{{W3C standards}}
* [https://www.w3.org/TR/xml-exc-c14n/ W3C-Empfehlung, Exclusive XML Canonicalization Version 1.0, 18. Juli 2002]


{{Navigationsleiste W3C-Standards}}
[[Category:Cryptography standards]]
[[Category:XML-based standards]]


[[Kategorie:Kryptologischer Standard]]
[[de:Canonical XML]]
[[Kategorie:XML-basierte Sprache]]
[[ja:Canonical XML]]
[[sv:Canonical XML]]
[[zh:Canonical XML]]

Aktuelle Version vom 7. April 2023, 15:43 Uhr

Canonical XML bezeichnet die kanonische Form von XML-Dokumenten, welche die Vergleichbarkeit zweier solcher Dokumente vereinfachen soll. Aus diesem Grund entfernt die Canonical XML-Transformation unbedeutende Unterschiede zwischen den Dokumenten. Jedes XML-Dokument kann in die kanonische Form (Canonical XML) gebracht werden.

Beispielsweise erlaubt XML das Auftreten von Leerzeichen an bestimmten Stellen innerhalb des Start-Tags, und Attribute können in beliebiger Reihenfolge angegeben werden. Solche Unterschiede werden, wenn überhaupt, sehr selten mit einer Bedeutung versehen. Aus diesem Grund werden die folgenden beiden Formen allgemein als äquivalent angesehen:

    <p class="a" secure="1">

    <p     secure   = "1"
              class='a'    >

Im Zuge der Umwandlung eines beliebigen XML-Dokumentes in kanonisches XML werden die Attribute ihrer nominativen Ordnung (ihrem Namen nach alphabetisch) sortiert und die Leerstellen und Anführungszeichen werden vereinheitlicht. Somit würde die zweite Form in die erste Form umgewandelt werden.

Canonical XML spezifiziert eine Reihe anderer Details, von denen einige hier aufgeführt werden:

  • die UTF-8-Zeichenkodierung wird verwendet,
  • Zeilenenden werden durch das Zeichen 0x0A (New Line = Zeilenvorschub) repräsentiert,
  • Leerzeichen innerhalb der Attributwerte werden vereinheitlicht,
  • Entitäts-Referenzen werden aufgelöst,
  • als CDATA markierte Abschnitte werden aufgelöst,
  • leere Elemente werden mit Start- und Endtags <leer></leer> kodiert, nicht durch Verwendung als Leertags <leer/>,
  • Standardattribute werden explizit angegeben,
  • überflüssige Namensraum-Deklarationen werden gelöscht.

Ein Dokument in Canonical XML zu konvertieren, ist idempotent. Das bedeutet, dass sich bei der ersten Umwandlung die dargestellten Zeichen im Vergleich zum Original ändern, jedoch bei weiteren Umwandlungen keine weiteren Änderungen vorgenommen werden.

Laut dem W3C können zwei Dokumente innerhalb des gegebenen Anwendungskontextes als logisch äquivalent angesehen werden, wenn diese die gleiche kanonische Form haben (außer Begrenzungen in Bezug auf einige selten vorkommende Fälle).

Allerdings könnten Nutzer in speziellen Umgebungen Wert auf spezielle Semantiken legen, welche sich außerhalb der allgemeinen logischen Gleichheit befinden, mit der Canonical XML assoziiert ist. Beispielsweise könnte ein Steganographie-System in einem XML-Dokument durch Veränderung von Leerzeichen, Anführungszeichen von Attributen und Anordnung dieser, die Verwendung von hexadezimalen vs. dezimalen Zeichenreferenzen usw. Informationen verbergen. Offensichtlich gehen durch die Umwandlung einer solchen Datei in Canonical XML diese speziellen Semantiken verloren. Allerdings können auch XML-Dateien, die sich in der Verwendung von Groß- vs. Kleinschreibung unterscheiden, bzw. solche, die alte vs. neue Rechtschreibung verwenden usw., als äquivalent für bestimmte Zwecke angesehen werden. Solche Kontexte sind außerhalb des Rahmens von Canonical XML.

Eine Implementierung von Canonical XML findet sich im Programm xmllint, das Bestandteil von gnome libxml2 ist und daneben für Microsoft Windows verfügbar ist.

Beispielanwendung:

xmllint --c14n SomeXml.xml > CanonicalVersionOf_SomeXml.xml