2016-10-04 93 views
1

我知道XML名稱空間必須是唯一的,以避免名稱衝突/元素衝突。但是我不明白的是這個衝突究竟在哪裏被檢查?誰將驗證/驗證名稱空間的唯一性?誰檢查XML名稱空間是否唯一?

例如,考慮從一個線程的堆棧溢出採取下面的例子:

<config xmlns:rnc="http://www.abcde.com/r1" xmlns:bsc="http//www.pqrs.com/r2"> 
    <rnc:node> 
     <rnc:rncId>5</rnc:rncId> 
    </rnc:node> 

    <bsc:node> 
     <bsc:cId>5</bsc:cId> 
    </bsc:node> 
</config> 

現在www.abcde.com和www.pqrs.com是由網址不存在嗎?那麼誰驗證/驗證真實性?我可以給一些隨機的關鍵字,它仍然會工作?那麼最重要的是什麼?是否有一些中央存儲庫被查看?請用通俗的語言說明。

+1

沒有強制執行。這就是爲什麼*如果*您選擇使用URI作爲命名空間,*您*應該選擇一個已經建立了控制權的基本URI,並*計劃*使用URI來避免衝突。 –

+0

如果我(印度)在印度使用URI並且坐在英國的人使用相同的URI,會發生什麼?衝突發生在哪裏?誰來檢查是否存在衝突?互聯網上的某個人是否會觀察並得出結論 - 好的,我們在這裏有衝突嗎?是這樣嗎? – fsociety

+0

沒有任何機制可以防止惡意使用其他人的URI。 –

回答

1

An XML namespace name URI need not be retrievable,並且沒有中央管理機構來管理名稱空間的使用或創建。有一個隱含的規範,只有域名的持有者可以基於該域創建名稱空間。


更新,以解決OP的問題在意見:

但我打算要知道,如果2人都不願意使用相同的 命名空間,有沒有辦法讓他們知道嗎?

很多人都使用許多名稱空間而無需協調;這是指向命名空間的一點。

只有名稱空間所基於的域的持有者應該永遠使用定義使用該域的名稱空間。

此外,我在本地使用相同的命名空間2個不同的元素,然後 會在本地產生衝突嗎?

對於具有相同命名空間的不同元素沒有內在問題;事實上,這很常見。

誰在本地檢查了我的xml文件?是否有一些驗證步驟?

可以針對XSD驗證XML文件,該XSD可以在定義中指定名稱空間中定義XML文件有效性的詞彙表和語法規則。

+0

我明白你的意思。但是我打算知道,如果兩個人不願意使用相同的命名空間,他們就沒有辦法知道嗎?另外,我在本地使用同一個名稱空間作爲兩個不同的元素,那麼衝突是否會在本地出現?是?怎麼樣?誰在本地檢查了我的xml文件?是否有一些驗證步驟? – fsociety