Die Verwendung eines leeren Strings in einer Namespace-Deklaration hat in XML Namespaces 1.1 eine besondere Bedeutung: Er wird in eine "Deklaration" umgewandelt, also in seinem Gültigkeitsbereich das Präfix "em" keinem URI zugeordnet Aber XML Namespaces 1.1 wurde noch nie weitgehend von Benutzern oder von XML-Parser-Writern übernommen.
XML-Namespaces 1.0 explizit sagt (§2.2): Die leere Zeichenfolge, obwohl es eine gültige URI-Referenz ist, kann nicht als Namespacename verwendet werden.
Die Antwort auf die Frage "Ist es zulässig, eine beliebige Zeichenfolge in Namespace-URI zu verwenden?" ist ein komplexer. Die XML-Name Spezifikation sagt auf der einen Seite:
An XML namespace is identified by a URI reference
und
The attribute's normalized value MUST be either a URI reference —
the namespace name identifying the namespace — or an empty string.
Er sagt auch: (. Ihr Beispiel xmlns:p="abcd"
eine relative URI-Referenz verwendet)
The use of relative URI references, including
same-document references, in namespace declarations
is deprecated.
Aber wenn es darum geht, Konformitätsregeln (§7) zu definieren, sagt es NICHT, dass ein Konformist d Okument muss gültige URIs in seinen Namespace-Deklarationen verwenden, und ich weiß, dass dies eine bewusste Entscheidung war (weil ich es zu der Zeit herausgefordert habe). In der Praxis erlaubt die überwiegende Mehrheit der XML-Parser und -Anwendungen jede Zeichenfolge als Namespace-Namen, aber es gibt einige Ausnahmen, wie die XOM-Bibliothek, und ich würde jedem empfehlen, absolute URIs als gute Praxis zu wählen.