xml schema有兩種,分別是微軟和w3c的版本。可以從其命名空間直接區分
這裡我們主要討論的是w3c版本,實際上兩者差別並不是很大。
xmlns:xsd= ""
xmlns=""
targetnamespace=""
elementformdefault="qualified">
這段**是w3c版本下的schema命名空間的宣告。下面我們逐個介紹這個根元素各個屬性的含義。
xmlns
這個指出此schema文件的命名空間,其中xsd是字首,在後續的**中用xsd來代替這個命名空間。
當沒有字首的時候表示該命名空間是預設的命名空間,同時,標準的命名空間不可以寫成:
其次,可以存在多個其他的命名空間,也可以沒有。但是標準的命名空間必須要有,且只能有乙個。如參考的例子中:
targetnamespace
這個指出本schema文件的命名空間,相當於自己的名字一樣,和其中乙個xmlns的值相同。可以沒有這個屬性,表示當前schema沒有命名空間。
elementformdefault
引用自
1、在xml中,所有引用xsd的全域性的元素都必須加上命名空間的字首(例如xmlns:aa=全域性元素都得加上aa)。xml文件要引用schema需要加入下列關鍵語句,參考上個例子,假設根元素是stu,儲存之後是c:\example.xsd2、非全域性的元素當設定為qualified時,必須新增命名空間的字首。
3、非全域性的元素當設定為unqualified時,不必也不能新增字首。
<?xml version="1.0"?>
xmlns:xsi="-instance"
xmlns=""
xsi:schemalocation=「file://c:/example.xsd」>
xmlns
這裡的xmlns和schema中的不一樣,這裡的xmlns指出xml的例項命名空間,也就是實現和schema的對接。
同樣的,需要乙個標準例項空間:xmlns:xsi=」-instance」
該命名空間申明xml例項文件願意遵循schema的例項規範。
xmlns=」」這個指出該例項文件要引用的命名空間,是真實有用的。
schemalocation和nonamespacelocation
這兩個屬性分別指出乙個有命名空間的schema和無命名空間的schema的位置。這個屬性要跟實際的schema中有沒有命名空間相對應。比如我們上個例子的就是有命名空間的,於是在xml例項文件中用了schemalocation屬性。當然也可以指定多個有名和無名命名空間,例如下面這個:
xmlns:xsi="-instance"
xsi:nonamespaceschemalocation="book2namespace.xsd"
xmlns:crazy=""
xmlns:crazyitnet=""
xsi:schemalocation="/crazy.xsd
/crazyitnet.xsd">
booklist>
命名空間和XML Schema
namespace 命名空間是一組保持唯一的名稱。例如,可以將乙個公司所有人的姓名視為乙個命名空間。命名空間就是在邏輯上相關的任何一組名稱,而且每個名稱都必須唯一。lvqi pingdu reminder dont forget eat grass 預設命名空間 lvqi pingdu remind...
XML Schema和名域 命名空間
xml schema和名域 命名空間 xml schema和名域 schema 是一些規則的集合 也稱為語法或者語彙 其中包括了型別定義 簡單和複雜型別 以及元素和屬性宣告。由於xml中可能存在不同的語彙來描述不同的元素和屬性,因此需要使用名域 namespace 和字首來避免元素和屬性宣告之間的模...
XML Schema中的幾個命名空間
對xml schema中命名空間的兩個錯誤理解 http magicwd.march zblog catalog.asp?cate 1 最近開始進入xml實踐階段,主要是因為神奇一刻 準備推出乙個電影方面的欄目,我們準備使用xml來做一些工作,所以,這兩天在這兩天在試著寫寫xml和xsdl。昨天,兩...