как работает канонизация w3c для подмножеств документов? - PullRequest
2 голосов
/ 09 марта 2012

Я не уверен, правильно ли работает "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

1 Ответ

1 голос
/ 14 марта 2012

Согласно спецификации (раздел 4.6):

Ненужные объявления пространства имен не делаются в канонической форме.

Пространство имен "http://www.w3.org/2001/XMLSchema-instance" не обязательно для представления подмножества документа, поскольку атрибут xsi: schemaLocation не включен, и поэтому пространство имен является" ненужным ".

...