2016-08-14 114 views
2

我知道按照慣例,默認名稱空間在XML文檔的根元素中被命名爲xmlns屬性。其他名稱空間被命名爲其他名稱。現在,我想知道爲什麼XML Scheme實例名稱空間總是命名爲xmlns:xsi而不是簡單的xsixsi會和xmlns:xsi一樣嗎?如果是,爲什麼是?如果不是,爲什麼不呢?爲什麼xmlns:xsi,而不僅僅是XML文檔中的xsi?

不是來自默認命名空間的元素和屬性名稱總是位於命名空間的名稱前面。有xmlns:xsi告訴我,xsi是名稱空間xmlns中定義的一個屬性,它具有衝突性,因爲來自默認名稱空間的屬性名稱不應位於名稱空間之前。

回答

2

默認名稱空間未命名爲xmlns

xmlns是聲明命名空間前綴(即短名稱,句柄)的方式。語法是xmlns[:prefix]="namepace-uri"

每個XML元素只能有一個名稱空間聲明,允許您從前綴中刪除(xmlns="namespace-uri"),並且如果聲明的名稱空間聲明被稱爲「默認名稱空間」。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"聲明URI http://www.w3.org/2001/XMLSchema-instance在此元素內應該被稱爲xsi

您可以自由選擇您喜歡的任何前綴,您可以聲明xmlns:bob="http://www.w3.org/2001/XMLSchema-instance",這意味着該URI中的URI http://www.w3.org/2001/XMLSchema-instance應該被稱爲bob

按照慣例,許多廣泛使用的XML名稱空間URI在任何地方都有相同的前綴,但這不是技術要求。

+0

「'xmlns:xsi =」http://www.w3.org/2001/XMLSchema-instance「'聲明URI'http://www.w3.org/2001/XMLSchema-instance'應爲在這個元素內部稱爲「xsi」。「這是否意味着'xsi'現在是一個名稱空間,其元素現在可以在文檔中使用?如果是,範圍是什麼?它所在的元素或整個文檔? – gicig

+1

'xsi'不是一個名字空間。 'http:// www.w3.org/2001/XMLSchema-instance'是命名空間。 'xsi'只是該名稱空間的簡稱,通常稱爲「前綴」,因爲您將它作爲前綴寫入相關名稱空間中的元素之前。名稱空間聲明的範圍是它出現的元素和其中的所有內容。 – Tomalak

+0

是的,這就是我的意思,但沒有正確表達自己。我的意思是由名稱表示的命名空間,即由'xsi'表示。非常感謝你的澄清。 – gicig

相關問題