2017-05-31 3 views

Antwort

0

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.

Verwandte Themen