É ilegal ter declarações de namespace não utilizados em um documento XML?
Pergunta
Por exemplo, é o documento seguinte XML considerado válido de acordo com o XML W3C 1.0 recomendação? Observe que o namespace 'futuro' não é referenciado em qualquer lugar do documento.
Embora este não pode ser considerado um bom estilo, a minha convicção é que o documento ainda é válido independentemente do namespace não utilizado. Alguém pode confirmar ou refutar esta suposição?
Obrigado, Matt
<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns='http://foo.org/v1' xmlns:future='http://bar.org/v1'>
<child>1</child>
</root>
Solução
O padrão não parece indicar o contrário. Seção 7, "Conformidade de Documentos" dá alguns requisitos, a fim de chamar um documento "namespace-bem-formado" e "namespace válido", mas nada diz que você não pode ter uma declaração de namespace não utilizado.
Na seção 3, um exemplo é dado, que contém um espaço de nomes não utilizados:
<x xmlns:edi='http://ecommerce.example.org/schema'>
<!-- the "edi" prefix is bound to http://ecommerce.example.org/schema
for the "x" element and contents -->
</x>
Outras dicas
Não, não é ilegal ter declarações de namespace não utilizados em um documento XML.
W3C realmente tem um validador serviço . Isso valida com duas advertências, que codificam e falta de um tipo de documento.
Enquanto a maioria das ferramentas de limpeza irá remover namespaces não utilizados Não me lembro de nada sobre especificação XML dizendo que é ilegal para mantê-los. E eu não sei de qualquer parser XML que não aceitará tal documento (e não há um monte de tais documentos flutuando).