Я не уверен, правильно ли работает "xmllint --c14n" в отношении
Пространства имен. Для следующего ввода, мое ручное наследие
реализация W3C Canonicalization сносит
пространство имен decl xmlns: xsi в тег Dcoument.
<?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