2010-06-20 66 views
1

我正在學習xml和xml處理。我無法很好地理解名稱空間的存在。XML命名空間是必需的?

我知道命名空間可以幫助我們在xml中分離相同的命名元素。我們不能通過具有相同名稱的屬性來區分元素嗎?爲什麼名稱空間很重要或必需?

我想舉一個例子:

<persons> 
    <person></person> 
    <s:person xmlns:s="student"></s:person> 
    <person type="student"></person> 
</persons> 

第一個人是正常element.Second使用命名空間和第三次使用type屬性。我們不能用第三個而不是第二個?

回答

0

使用屬性和命名空間的區別在於語義。在你的例子中,學生是人的一個子類。如果您使用標籤table怎麼辦?數據庫表和木製表不是同一個泛型表的子類 - 它們是完全不同的概念,因此使用不同的名稱空間是有意義的。

當然,如果這是你自己的應用程序,則沒有,名字空間不是必需的,但如果你使用其他應用程序的XML,以及他們自己的命名空間XML,那麼你需要的命名空間太

查看W3School上的XML Namespaces以獲取更多信息。

+0

我已經從W3Schools學習 – Freshblood 2010-06-20 19:47:56

+0

學生是一個人或多人的子類? – Freshblood 2010-06-20 19:49:23

+0

學生是一種人,但數據庫表不是一種木製的桌子 - 它們是不同的東西。 – Skilldrick 2010-06-20 20:55:44

4

確保您可以用不同的名稱區分對象及其屬性 - 只要您完全控制了所有XML數據即可!

但請考慮這一點:您需要與第三方Web服務或以XML格式向您發送數據的數據接口進行集成。如果該Web服務或該數據接口也實現了<Person>?除了由第三方執行的可能完全不同的人員類型之外,您如何將自己的人員類型保留下來?

這是XML命名空間背後的想法 - 這就是爲什麼使它們全球唯一從而導致使用URI(域名)的做法非常重要的原因 - 因爲「google.com」域絕對只能是存在一次 - 全球。

+1

+1這可能是我遇到的XML名稱空間最有用的解釋。 – JYelton 2010-12-30 22:15:44