2009-06-11 8 views
1

Wird zum Beispiel das folgende XML-Dokument gemäß der W3C XML 1.0-Empfehlung als gültig betrachtet? Beachten Sie, dass der Namespace "future" nirgendwo im Dokument referenziert wird.Ist es illegal, nicht verwendete Namespace-Deklarationen in einem XML-Dokument zu verwenden?

Obwohl dies nicht als guter Stil angesehen werden kann, glaube ich, dass das Dokument unabhängig vom nicht verwendeten Namespace immer noch gültig ist. Kann jemand diese Annahme bestätigen oder widerlegen?

Danke, Matt

<?xml version="1.0" encoding="UTF-8" ?> 
<root xmlns='http://foo.org/v1' xmlns:future='http://bar.org/v1'> 
    <child>1</child> 
</root> 

Antwort

3

Die standard scheint nicht anders zu zeigen. Abschnitt 7, "Konformität von Dokumenten", enthält einige Anforderungen, um ein Dokument "namespace-well-formed" und "namespace-valid" aufzurufen, aber nichts besagt, dass Sie keine unbenutzte Namespace-Deklaration haben können.

In Abschnitt 3 wird ein Beispiel gegeben, das einen nicht verwendeten Namespace enthält:

<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> 
+0

Danke Adam. Das ist ziemlich genau das, wonach ich gesucht habe. – Matty

3

Nein, ist es nicht illegal nicht verwendete Namespace-Deklarationen in einem XML-Dokument zu haben.

1

W3C hat tatsächlich eine validator service. Dies bestätigt mit zwei Warnungen, Codierung und Fehlen eines Doctype.

0

Während die meisten Clean-Up-Tools nicht verwendete Namespaces entfernen, kann ich mich an keine XML-Spezifikation erinnern, die besagt, dass es illegal ist, sie zu behalten. Und ich kenne keinen XML-Parser, der ein solches Dokument nicht akzeptiert (und es gibt eine Menge solcher Dokumente, die herumschweben).

+0

Dank. Ich arbeite mit einem Kunden, dessen Entwicklungsstapel etwas zu wünschen übrig lässt. Leider hat die XML-Implementierung die unangenehme Gewohnheit, unbenutzte Namespace-Deklarationen einzufügen. Einer der Anbieter, mit denen wir arbeiten, ist die Zurückweisung von Nachrichten, die nicht verwendete Namespaces enthalten, als ungültig gemäß den W3C-Spezifikationen. Nachdem ich den Morgen damit verbracht habe, die Empfehlungen durchzugehen, finde ich keine ausdrückliche Regel, die besagt, dass dies illegal ist. Ich dachte jedoch, ich hätte etwas übersehen. Danke für die Eingabe. – Matty