我不确定“xmllint --c14n”在命名空间方面是否正常工作。对于以下输入,我手工制作的 W3C 规范化遗留实现将命名空间 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