Canonical XML
別名:XML Canonicalization,XML正規化,XML-C14N
Canonical XMLとは、マークアップ言語であるXMLにおいて表記を統一するために用いられる記法のことである。「正規化されたXML文書」という意味を持つ。W3Cによって策定された。
XMLは、同じ内容を記述する際にある程度の異なる記述法を行っても差異を吸収できる余裕をもっており、出力された結果を見て同一の内容と判断されるようなXMLの記述も、コードのレベルでは異なる文字列から構成されるている場合がある。具体的には、ソースコードに改行が含まれていたりいなかったり、文字列が異なる文字コードで書かれていたり(あるいは実体参照で指定されていたり)すると、結果として出力される内容は同じでもXMLの記述そのものは別物と判断される。
XML文書の暗号化などを行う際には、このような表記にゆれによって暗号照会が失敗する恐れがある。そのため、XMLによる電子署名などを利用する際には、Canonical XMLによって表記を統一する必要がある。
余談だが、W3Cがオンラインで公開しているCanonical XMLの勧告文書のURIはhttp://www.w3.org/TR/xml-c14nとなっている。この「c14n」とは「XML Canonicalization」(Cとnとの間に14文字)の意味である。
参照リンク
Canonical XML
Canonical XML
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 10:12 UTC 版)
ナビゲーションに移動 検索に移動Canonical XMLとは、XMLのプロファイル又はサブセットである。あらゆるXML文書はCanonical XMLに変換することができるが、詳しく言及すれば、一般に「重要である」と考えられていない表記の違いは標準化され取り去られてしまう。故に、2つのXML文書をCanonical XMLに変換し比較すれば、小さな表記の違いを省き、2つが論理的に「同じ文書」であるかどうかを容易に判別することができる。
例えば、XMLの仕様では、開始タグの様々な場所に空白が挿入されることを認めている。 表記の違いが何らかの意味を持つことはめったにないので、次の2つのXML文書は同等であると考えられる。
<p class="a" secure="1">
<p secure = "1"
class='a' >
任意の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では、そのような違いは無視され、同じとされる。
関連項目
外部リンク
- W3C Recommendation, Canonical XML Version 1.0, 15 March 2001
- W3C Recommendation, Exclusive XML Canonicalization Version 1.0, 18 July 2002
|
- Canonical XMLのページへのリンク