2015-03-24 45 views
4

哪些XML名稱空間是默認聲明的,不需要/不能聲明?默認聲明哪些XML名稱空間?

+0

@CharlesDuffy那麼'http://www.w3怎麼樣。org/XML/1998/namespace',例如? – lexicore 2015-03-24 22:41:01

+0

如果您閱讀http://www.w3.org/XML/1998/namespace(方便,在同一位置有一個網頁),您會注意到它被描述爲唯一。 – 2015-03-24 22:43:09

+0

相關:http://www.w3.org/TR/xml-names/#xmlReserved – 2015-03-24 22:43:56

回答

2

簡而言之:

  • http://www.w3.org/XML/1998/namespace前綴xml
  • http://www.w3.org/2000/xmlns/前綴xmlns

兩者Namespaces in XML 1.0 (Third Edition)Namespaces in XML 1.1 (Second Edition)限定只有兩個名稱空間:

命名空間約束:保留前綴和命名空間的名稱

前綴XML是綁定到命名空間名稱 http://www.w3.org/XML/1998/namespace定義。它可能,但不一定是,被聲明爲 ,並且不得未聲明或綁定到任何其他名稱空間 名稱。其他前綴不能綁定到這個名稱空間名稱,它不能被聲明爲默認名稱空間。

前綴的xmlns僅用於聲明命名空間綁定,並通過 綁定到命名空間名稱 http://www.w3.org/2000/xmlns/定義。它不得未申報或 未申報。其他前綴不得將綁定到此名稱空間名稱 並且它不得不得將聲明爲默認名稱空間。元素名稱 絕不能的前綴爲xmlns

保留所有以三字母序列x,m,l, 開頭的所有其他前綴在任何情況下的組合。這意味着:

  • 用戶不應該使用而言,除了後來規格
  • 處理器不得把他們當作致命錯誤定義。

因此,只有http://www.w3.org/XML/1998/namespace(前綴xml,包含屬性的少數如xml:langsee full list here),並http://www.w3.org/2000/xmlns/(前綴xmlns,用於聲明其他命名空間)中的標準被實際的定義。

一些XML處理庫可以提升http://www.w3.org/2001/XMLSchema(前綴xs)和http://www.w3.org/2001/XMLSchema-instance(前綴xsi)近默認狀態,甚至可以編寫XML文件時寫xmlns聲明這些命名空間了默認,但認爲僅僅是慣例而不是被視爲標準行爲。

+0

燦爛!我希望你不介意TL; DR編輯。 – lexicore 2015-03-24 23:26:09

+0

對於在XML文檔中隱式聲明的名稱空間,答案是正確的。在其他規格中,情況稍有不同。例如,在XPath/XSLT/XQuery使用的XDM數據模型中,每個節點都具有「xml」作爲名稱空間綁定,但不包含「xmlns」。 – 2015-03-25 08:01:35