2013-09-24 44 views
0

讓我們考慮這個XML數據命名空間URI究竟意味着什麼?

<root xmlns:h="http://www.w3.org/TR/html4/" 
xmlns:f="http://www.w3schools.com/furniture"> 

<h:table> 
    <h:tr> 
    <h:td>Apples</h:td> 
    <h:td>Bananas</h:td> 
    </h:tr> 
</h:table> 

<f:table> 
    <f:name>African Coffee Table</f:name> 
    <f:width>80</f:width> 
    <f:length>120</f:length> 
</f:table> 

</root> 

這裏NURI爲H: 「http://www.w3.org/TR/html4/
NURI爲F: 「http://www.w3schools.com/furniture
什麼是NURI(命名空間URI)確切指的是?有必要嗎?。它實際上包含什麼?

+0

@andrewb這很好。我在問NURI? –

回答

1

在您的示例中使用XML名稱空間是必要的,因爲文檔中有兩個table元素具有不同的含義。他們不一樣。一個來自XHTML,另一個來自W3學校的詞彙。您可以通過將第一張表格放在XHTML NS中來區分它們,這要歸功於本地前綴h,該地址前綴綁定到 NS,第二個table在另一個NS中,這要歸功於綁定到http://www.w3schools.com/furniture NS的本地前綴f。現在,通過構建擴展名和比較URI,我們可以區分這兩種元素。請注意,前綴是任意的。

命名空間URI可以讓我們唯一標識命名空間。它也被稱爲命名空間名稱。如果您使用URL,您將利用域名系統(DNS)中域名的唯一性。

Namespaces in XML 1.0的2.1節中,我們可以看到:

XML命名空間由URI引用

而在2.3節確定:

URI引用標識的名稱空間在確定名稱是否屬於給定名稱空間時進行比較,以及兩個名稱是否屬於同一名稱空間。 [定義:這兩個URI被視爲字符串,當且僅當這些字符串是相同的,即它們是相同的字符序列時,它們是相同的。 ]比較區分大小寫,並且沒有%轉義已完成或未完成。

這意味着當一個(程序)必須比較NS URI時,它只會作爲原始字符串比較。 URI不一定是指向因特網資源的URL(例如,可通過HTTP訪問的網頁)。

請注意,URI與本地名稱(不帶冒號的名稱)一起使用來構建擴展名稱,即一對(URI, localName),您可以將其編寫爲{URI}localName(James Clark符號),並且使用該對而不是本地名稱。這兩種表示法都不是標準的,不能在XML文檔中使用。它只是允許用戶寫下東西。命名空間並不存在,但建議說明了我們如何使用擴展名稱以及如何使用名爲xmlns的特殊屬性來構建此類擴展名稱。就是這樣,不多也不少。

讓我建議您閱讀Ronald Bourret的Namespace Myths Exploded

XML 1.1中的名稱空間將URI的用法概括爲IRI。

相關問題