xml schema 中elementFormDefault 的用法簡介

gangyaocn發表於2007-06-20
一個 XML schema 中 elementFormDefault="?" 這一屬性用來指示 XML Schema 處理程式把這個 XML schema 中定義的元素或者型別放到哪個名稱空間。[@more@]一個 XML schema 中 elementFormDefault="?" 這一屬性用來指示 XML Schema 處理程式把這個 XML schema 中定義的元素或者型別放到哪個名稱空間。

一個schema中宣告的元素或者型別只能歸到兩個名稱空間中的某一個去,這兩個是,無名名稱空間和由targetSchema屬性指明的目標名稱空間。而targetSchema屬性只能在xs:schema的定義中宣告,因而,一個schema中的定義的元素或型別只可能歸屬於一個有名名稱空間(但是還有可能歸屬於無名名稱空間)。

當elementFormDefault="qualified" 時,所有全域性元素的子元素將被以預設方式放到目標名稱空間,但是全域性元素或者型別將被放到目標名稱空間;而當elementFormDefault="unqualified" 時,所有全域性元素的子元素將被以預設方式放到無名名稱空間。而屬性的名稱空間類似地由attributeFormDefault="?"來指明。

需要明白的是,elementFormDefault="?" 是有作用域的,並且是被繼承的,除非在子定義中覆蓋父定義。

下面三個例子說明了elementFormDefault的使用效果。紅色表示屬於已名稱空間的元素,藍色表示屬於未名稱空間的元素。

1.定義了目標名稱空間, 全域性elementFormDefault=“unqualified”。這時除了全域性元素或者型別將歸於目標名稱空間外,區域性元素將歸於無名名稱空間。

unqualified.xsd


targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">








unqualified.xml


xmlns:xsi=" xsi:schemaLocation="aaaa unqualified.xsd">
3.141593E0
String

2. 定義了目標名稱空間, 全域性elementFormDefault=“qualified”。當elementFormDefault="qualified" 時,所有全域性元素的子元素將被以預設方式放到目標名稱空間,連同全域性元素或者型別一起

qualified.xsd


targetNamespace="aaaa" elementFormDefault="qualified" attributeFormDefault="unqualified">








qualified.xml


xmlns:xsi=" xsi:schemaLocation="aaaa qualified.xsd">
3.141593E0
String

3. 定義了目標名稱空間, 全域性elementFormDefault=“unqualified”。這時全域性元素(c)或者型別將歸於目標名稱空間。區域性元素(c1,c2)以預設方式歸於無名名稱空間。區域性元素(c3)在區域性定義中使用form=“qualified”覆蓋全域性設定的unqualified,這使得c3歸於目標名稱空間(如果它有子元素,子元素將以預設方式歸於目標名稱空間)。

qualified2.xsd


targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">





form="qualified"/>




qualified2.xml


xmlns:xsi=" xsi:schemaLocation="aaaa qualified2.xsd">
3.141593E0
String
0

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26651/viewspace-919947/,如需轉載,請註明出處,否則將追究法律責任。

相關文章