2016-04-03 65 views
1

即時知道自己對下列句子的含義:含義XML命名空間的

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 

究竟是什麼這些句子在做什麼?

很明顯,它們將關聯的html標記庫綁定到前綴h: jsf/htmlf: jsf/core或默認xhtml。 據說這些標籤庫是「命名空間」 - 這意味着定義這些html標籤的元素和屬性的集合,我們可以通過給定的前綴訪問這些標籤 - 或者不是?

這是否意味着上面的URI將我重定向到某種類型的DTD,標籤元素被定義在哪裏?

回答

2

是:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=xml%20namespaces

命名空間是名稱的統一資源標識符(URI)。通常,爲給定XML詞彙表的命名空間選擇的URI描述了定義詞彙表的作者或組織所控制的資源,例如作者Web服務器的URL。但是,名稱空間規範不要求也不建議使用名稱空間URI來檢索信息;它只是被一個XML解析器視爲一個字符串。例如,http://www.w3.org/1999/xhtml本身的文檔不包含任何代碼。它只是向讀者描述了XHTML命名空間。使用URI(例如「http://www.w3.org/1999/xhtml」)來標識名稱空間而不是簡單的字符串(如「xhtml」),可以減少使用重複標識符的不同名稱空間的概率。

儘管術語名稱空間URI很普遍,但W3C建議書將它稱爲名稱空間名稱。該規範並不完全規定名稱空間名稱的準確規則(它並沒有明確指出解析器必須拒絕名稱空間名稱不是有效的統一資源標識符的文檔),並且許多XML解析器允許使用任何字符串。在建議的1.1版本中,名稱空間名稱成爲國際化資源標識符,該標識符允許使用幾乎所有XML軟件都已接受的非ASCII字符。然而,名稱空間URI一直存在,不僅在流行的用法中,而且在W3C和其他許多其他規範中也是如此。

繼命名空間推薦發佈之後,關於如何處理相對URI的問題引發了一場激烈的爭論,一些人強烈主張應該簡單地將其視爲字符串,另一些人則堅信自己應該轉向通過根據文檔的基本URI解析絕對URI。[3]辯論的結果是來自W3C的一項裁決,即相對URI被棄用。[4]

儘管與HTTP協議沒有任何正式關係,但在http方案中採用URL形式的URI(例如http://www.w3.org/1999/xhtml)是很常見的。 Namespaces規範沒有說明如果這樣一個URL被解引用會發生什麼(也就是說,如果軟件試圖從這個位置檢索文檔)。一些用戶採用的一個約定是在該位置放置RDDL文檔。[5]但是,通常情況下,用戶應該假定名稱空間URI只是一個名稱,而不是Web上文檔的地址。