爲什麼XML驗證不允許使用空空間URI?它通常是驗證器(http://www.xmlvalidation.com)功能還是XML的功能?XML:命名空間與空URI
<?xml version="1.0"?>
<root xmlns:em="">
<em:elem/>
</root>
在命名空間URI中使用任何字符串是否有效? (例如,xmlns =「abcd」)
爲什麼XML驗證不允許使用空空間URI?它通常是驗證器(http://www.xmlvalidation.com)功能還是XML的功能?XML:命名空間與空URI
<?xml version="1.0"?>
<root xmlns:em="">
<em:elem/>
</root>
在命名空間URI中使用任何字符串是否有效? (例如,xmlns =「abcd」)
在命名空間聲明中使用空字符串在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作爲良好實踐。