2

名前空間に関して「xmllint --c14n」が正しく機能するかどうかはわかりません。次の入力では、W3C Canonicalization の手作りのレガシー実装は、名前空間 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 を参照してください。

4

1 に答える 1

1

仕様によると (セクション 4.6):

不必要な名前空間の宣言は正規の形式では行われません。

「http://www.w3.org/2001/XMLSchema-instance」名前空間は、ドキュメントのサブセットを表すために必要ではありません。これは、xsi:schemaLocation 属性が含まれておらず、したがって名前空間が「不要」であるためです。

于 2012-03-14T19:51:30.430 に答える