我不确定"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
发布于 2012-03-15 03:51:30
根据规范(4.6节):
不会以规范形式进行不必要的名称空间声明。
"http://www.w3.org/2001/XMLSchema-instance“名称空间不是表示文档子集所必需的,因为没有包括xsi:schemaLocation属性,因此名称空间是”不必要的“。
https://stackoverflow.com/questions/9635364
复制相似问题