About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

XML Schema 從看不懂到慢慢懂 - part 4

FUNction 於 2008年2月13日 下午2:49 發表
前一篇: XML Schema 從看不懂到慢慢懂 - Part 3
Complex Element

Complex Element 包含其他element或attribute。

接下來我們會從簡單到複雜定義一個complex element。 "employee" 就是一個complex element,因為他裡面包著兩個element(firstname, lastname)。

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>


用以下的schema可以為上面的XML定義。值得注意的是我們會用<xs:complexType><xs:sequence>標籤包住裡面的物件(element)。Sequence代表employee下面的物件已經沒有階層,而是平行的。

<xs:element name="employee">

<xs:complexType>

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>


接下來來點複雜的(但我覺得挺重要,所以還是看一下)。當很多個complex element 裡面的element 一樣時,我們可以直接幫這個complex element 給一個 "type",在從type中做定義。接下來就可以把這個type 套用到多個complex element中了。

例如employee, student, member 都包含一樣的子element(firstname, lastname),所以我們另外定義了他的type。

<xs:element name="employee" type="personinfo"/>

<xs:element name="student" type="personinfo"/>

<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>


還可以一層一層的包得像洋蔥,替換的淋漓盡致,看懂以下需要不少的抽象邏輯喔。

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:sequence>

</xs:complexType>


<xs:complexType name="fullpersoninfo">

<xs:complexContent>

<xs:extension base="personinfo">

<xs:sequence>

<xs:element name="address" type="xs:string"/>

<xs:element name="city" type="xs:string"/>

<xs:element name="country" type="xs:string"/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>


下一篇:XML Schema 從看不懂到慢慢懂 - part 5 Tags: ,

讀者回應 ( 0 意見 )

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^