[1] 排他的 XML 正準化は、 XML 文書の一種の正準形を作成する方法を規定した仕様です。
正準XML 仕様により XML 文書の一部分の正準形を作成すると、
その外側の名前空間宣言や xml:*
属性が継承されるため、電子署名など一部の応用で不都合が生じていました。
排他的XML正準化仕様による正準形の作成方法を使えば、
このような影響を排除できます。
[2] 仕様書:
[3] 応用
排他的 XML 正準化が想定している応用は、 正準XML と似ていますが、 XML 的文脈が変わり得るものです。 排他的 XML 正準化 1.0 1.2
例えば、署名のために別の名前空間の要素の中にある文書片を入れると、 その入れた中身にまで名前空間宣言が適用されてしまうので、 正準XML では中身だけ正準化しても、 名前空間宣言まで含まれてしまいます。 排他的XML正準化はこの問題に対処するために開発されました。
[5] 例えば、
n1:elem1 xmlns:n1="http://b.example"
content
</n1:elem1>
を封筒に包み、n0:pdu xmlns:n0="http://a.example" n1:elem1 xmlns:n1="http://b.example" content </n1:elem1> </n0:pdu>とした文書を転送したとします。転送先で封筒の内容を XPath 式
(//. | //@* | //namespace::*)[ancestor-or-self::n1:elem1]で選択し、 (素の) 正準XML 化すると、
n1:elem1 xmlns:n0="http://a.example" xmlns:n1="http://b.example"
content
</n1:elem1>
のようになります。 排他的 XML 正準化 1.0 2.1
封筒のための名前空間が残ってしまいます。
排他的XML正準化すると、 n1:elem1 xmlns:n1="http://b.example"
content
</n1:elem1>
となります。[4] 制約
正準XML と排他的XML正準化の違いは、 排他的XML正準化の利点 (というか目的) であると同時に、欠点でもあります。
排他的XML正準化には2つの欠点があります。 排他的 XML 正準化 1.0 1.3
用語排他的 XML 正準化は、 XML文書部分集合に排他的XML正準化法を適用する処理を指します。
[6] 識別
XMLデジタル署名やXML暗号化の
Transform
や
CanonicalizationMethod
には、排他的XML正準化を表す次の URI
を指定できます 排他的 XML 正準化 1.0 4.:
http://www.w3.org/2001/10/xml-exc-c14n#
(注釈なし)http://www.w3.org/2001/10/xml-exc-c14n#WithComments
(注釈あり)包括的名前空間接頭辞並び引数は、
要素で指定できます。InclusiveNamespaces
[9] RDF/XML (2004年版) と RDFa 1.1 は rdf:XMLLiteral の直列化のために排他的XML正準化1.0 を使っています。
[10] RDF 1.1 の RDF/XML は使っていません。
[11] SAML Specifications | SAML XML.org ( ( 版)) http://saml.xml.org/saml-specifications
[15] rfc4154, https://datatracker.ietf.org/doc/html/rfc4154#section-5.8.1