2017-05-31 153 views

回答

0

在命名空間聲明中使用空字符串在XML命名空間1.1中具有特定含義:它將其變成「undeclaration」,因此在其範圍內,前綴「em」是不與任何URI相關聯。但XML Namespaces 1.1從未被用戶或XML解析器編寫者廣泛採用。

XML命名空間1.0明確地說,(§2.2):空字符串,雖然它是一個合法的URI參考,不能作爲命名空間名稱。

的問題的答案「是不是有效使用任何字符串中的命名空間URI?」是一個複雜的。該XML命名空間規範說,一方面:

An XML namespace is identified by a URI reference 

The attribute's normalized value MUST be either a URI reference — 
the namespace name identifying the namespace — or an empty string. 

它還說:(你們的榜樣xmlns:p="abcd"使用相對URI參考)

The use of relative URI references, including 
same-document references, in namespace declarations 
is deprecated. 

但是,當涉及到定義一致性規則(第7節)時,它不會說符合規則d ocument必須在其名稱空間聲明中使用有效的URI,並且我知道這是一個有意的決定(因爲我當時對它進行了挑戰)。在實踐中,絕大多數XML解析器和應用程序都允許任何字符串作爲名稱空間的名稱,但是有一些例外,比如XOM庫,並且我建議任何人選擇絕對URI作爲良好實踐。