规范化 XML(Canonical XML, c14n)

预处理 XML 文档以实现纯文本比较和数字签名

规范化 XML(Canonical XML, c14n)使您能够创建在符合 XML 语法规则变体中保持语义一致的 XML 文档物理表示。通过本文进一步了解该标准方法,该方法可用于测试、数字签名等。

投稿者: W3C

2007 年 8 月 28 日

规范化 XML(Canonical XML, c14n)使您能够创建在符合 XML 语法规则变体中保持语义一致的 XML 文档物理表示。通过本文进一步了解该标准方法,该方法可用于测试、数字签名等。

Canonical XML Version 1.0 [W3C 推荐标准] 是一种生成 XML 文档物理表示的标准方法,称为 规范化形式 (canonical form),用于统一 XML 文档符合 XML 语法规则且不影响语义的变体。比如,在 XML 中属性的顺序并不重要,因此如果一个文档中所有的属性都按照字母顺序排列,而另一个相同的文档以不同的方式保存属性,尽管其物理表示不同,但对于 XML 1.0 而言两个文档是等价的。这有时候会造成应用中的问题。比如,如果希望用数字加密签名保护文档不被篡改,改变属性的顺序就会破坏签名,尽管对 XML 标准来讲文档实际上并没有改变。解决的办法是在进行签名、文本比较或者其他此类操作之前把文档转化成规范的形式(这个过程称为 “规范化 (canonicalization, c14n)”)。这样就可以保证 XML 中认为不重要的变动会被正确地接纳。该项工作始于 Canonical XML 1.1 [开发阶段],其中解决了 1.0 规范中一些重要问题。

有时候需要进行比较或者签名的 XML 文档实际上是一个更大的文档的一部分。即便如此,c14n 一般也需要对整个源文档进行规范化,以便处理名称空间声明这样的细节。如果需要把 c14n 严格限制在一个文档子集中,就必须使用相关的算法 Exclusive XML Canonicalization Version 1.0 [W3C 推荐标准]。

参考资料

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML
ArticleID=254283
SummaryTitle=规范化 XML(Canonical XML, c14n)
publish-date=08282007