w3c规范化如何为文档子集工作?

时间:2012-03-09 14:07:56

标签: xml w3c xml-namespaces libxml2 xmllint

我不确定“xmllint --c14n”是否正常工作 命名空间。对于以下输入,我手工制作的遗产 W3C Canonicalization的实施拉低了 namespace decl xmlns:xsi到Dcoument-Tag。

<?xml version="1.0" encoding="UTF-8"?>
<conxml xmlns="urn:conxml:xsd:container.nnn.002" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:conxml:xsd:container.nnn.002 container.nnn.002.xsd">
  <MsgPain001>
    <Document xmlns="urn:swift:xsd:$pain.001.002.02">
      <pain.001.001.02>
      </pain.001.001.02>
    </Document>
  </MsgPain001>
</conxml>

根据我的遗留实施的实际结果:

...
    <Document xmlns="urn:swift:xsd:$pain.001.002.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...

但xmllint --c14n没有这样做,它报告

...
    <Document xmlns="urn:swift:xsd:$pain.001.002.02">
...

有人可以根据规范解释谁是对的 为什么呢?

查看详细信息:http://www.w3.org/TR/2001/REC-xml-c14n-20010315#Example-DocSubsets

1 个答案:

答案 0 :(得分:1)

根据规范(第4.6节):

  

不必要的命名空间声明不是以规范形式进行的。

&#34; http://www.w3.org/2001/XMLSchema-instance"命名空间不是表示文档子集的必要条件,因为不包含xsi:schemaLocation属性,因此命名空间不需要&#34;。