Est-il illégal d'avoir des déclarations d'espace de noms inutilisés dans un document XML?
Question
Par exemple, est le document XML suivant considéré valide selon la recommandation XML 1.0 du W3C? Notez que l'espace de noms « futur » n'est pas référencé nulle part dans le document.
Bien que ce ne peut pas être considéré comme un bon style, ma conviction est que le document est toujours valide quel que soit l'espace de noms utilisé. Quelqu'un peut-il confirmer ou infirmer cette hypothèse?
Merci, Matt
<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns='http://foo.org/v1' xmlns:future='http://bar.org/v1'>
<child>1</child>
</root>
La solution
Le standard ne semble pas indiquer le contraire. L'article 7, « La conformité des documents » donne quelques exigences afin d'appeler un document « espace de noms bien formé » et « espace de nom valide », mais rien ne dit que vous ne pouvez pas avoir une déclaration d'espace de noms utilisé.
Dans la section 3, un exemple est donné, qui contient un espace de noms utilisé:
<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>
Autres conseils
Non, ce n'est pas illégal d'avoir des déclarations d'espace de noms inutilisés dans un document XML.
Alors que la plupart des outils de nettoyage va supprimer les espaces de noms inutilisés Je ne me souviens pas de quoi que ce soit sur les spécifications XML disant qu'il est illégal de les garder. Et je ne connais pas d'analyseur XML qui n'acceptera pas un tel document (et il y a beaucoup de ces documents flottant autour).