Canonical XMLとは、XMLのプロファイル又はサブセットである。あらゆるXML文書はCanonical XMLに変換することができるが、詳しく言及すれば、一般に「重要である」と考えられていない表記の違いは標準化され取り去られてしまう。故に、2つのXML文書をCanonical XMLに変換し比較すれば、小さな表記の違いを省き、2つが論理的に「同じ文書」であるかどうかを容易に判別することができる。

例えば、XMLの仕様では、開始タグの様々な場所に空白が挿入されることを認めている。 表記の違いが何らかの意味を持つことはめったにないので、次の2つのXML文書は同等であると考えられる。

任意のXMLドキュメントをCanonical XMLに変換する際に、属性は標準の順序は属性名によってアルファベット順に並べられ、標準的なスペース、クォーテーションで表記される。したがって、上記の2番目の文書は1番目に変換される。

Canonical XMLは他にも多くの規定をしている。例えば、

  • UTF-8によってエンコードされていること
  • 行の最後尾は、0x0Aを使用することによって示すこと
  • 属性値における空白は省略されるということ
  • 実体参照は展開される
  • CDATAセクションは使用できない
  • 空要素は特別な記法を用いず、開始タグ、終了タグともに用いること
  • 属性値を正規化すること
  • 余計な・XML宣言、DTD宣言を削除すること

XML文書のCanonical XMLへの変換は、冪等である。 すなわち、最初の変換はオリジナルの文書と異なった文字列を返すが、それ以上、繰り返し変換しても変化はおこらないということである。

W3Cによると、2つのXML文書のCanonical XMLが同一ならば、2つの文書は任意のアプリケーション(いくつかの珍しいケースを除く)において論理的に同等である。

しかしながら、セマンティックスに着目する場合は、通常のCanonical XMLでの論理的同等という範囲を越えている。例えば、 ステガノグラフィシステムでは、空白、属性、クォーテーション、属性の順序、16進数で文字参照するか、10進数で文字参照するかなどの意味のある情報を省略してしまう。 Canonical XMLへの変換は、そのような専門的なセマンティックスを明らかに失くしてしまう。 一方、大文字と小文字表記、古典的表記と現代的表記などの点で違うXML文書とされていたものは、Canonical XMLでは、そのような違いは無視され、同じとされる。

関連項目

  • XML署名

外部リンク

  • W3C Recommendation, Canonical XML Version 1.0, 15 March 2001
  • W3C Recommendation, Exclusive XML Canonicalization Version 1.0, 18 July 2002

Was ist XML? XML einfach erklärt.

Was ist eine XMLDatei? Data Basecamp

XML Datei mit Lineal ComputerBase Forum

Canonical XML

Kostenloser XML Viewer von Struktur von XMLDateien