11、XML的文件構建模組的定義
學習目標:
1、瞭解Java的歷史
2、為什麼要學習Java語言
3、端正學習態度
學習過程:
由上一節可知,只要符合XML的文件定義格式,在一個XML文件中,我們可以任意定製標籤,但是當我們將XML文件交給別人使用時,他怎麼才能知道你所提交的文件中元素與元素之間、元素與屬性之間的關係,以及屬性的取值是正確的呢?還有我們在定義XML時候有如果屬性名稱拼寫錯誤等等,這些問題如何解決呢?
XML的強大是靈活,可以任意定義,但是問題也就在這裡,就是過於靈活了,我們需要為XML新增一些約束。
XML檔案一般分為三種,上一節我們學習只是其中一種。三種簡介如下:
-
標準XML文件:以.xml為檔案的字尾名,作用就是資料的結構化和作為資料的載體。
-
語法結構規範Schema文件:以.xsd為檔案的字尾名,定義XML檔案的結構規範和一些約束條件。
-
樣式文件:以.xsl為檔案的字尾名,XML的樣式表,可以做到樣式和資料分離,但目前使用得並不多。
下面我們主要學習一下Schema文件的定義和使用
一、什麼是 XML Schema?
XML Schema 的作用是定義 XML 文件的合法構建模組,類似 DTD。Schema具體的元素描述這裡我就不做太多的介紹了。具體大家可以參考一下W3C的學習網:
http://www.w3school.com.cn/schema/schema_intro.asp
XML Schema的作用如下:
-
定義可出現在文件中的元素
-
定義可出現在文件中的屬性
-
定義哪個元素是子元素
-
定義子元素的次序
-
定義子元素的數目
-
定義元素是否為空,或者是否可包含文字
-
定義元素和屬性的資料型別
-
定義元素和屬性的預設值以及固定值
二、在MyEclipse中定義Schema
MyEclipse提供了一種視覺化的操作定義Schema檔案,操作非常簡單。下載我們再看看上一節課的例子,還有一些約束是沒有新增的。如:“每一個學生和老師都有一個Id一個學生只能有一個姓名, 年齡,地址可以有多個”。下面我們就通過Schema的定義XML檔案的屬性名稱、屬性值型別和約束條件。
1、新建一個Schema檔案。選擇New>other>XML,選中XML Schema,點選下一步。
輸入Schema檔案的檔名稱,點選完成就可以了。
2、新增元素。
修改元素的名稱,由於根元素的內容並不是一個簡單型別,需要新增一個複合型別(Complex Type),點選SetType》New。
選中Complex Type,修改型別名稱,點選OK即可
3、新增子元素。
右鍵機選新增子元素。
同樣,這兩個元素的型別也不是基本型別,需要修改為新建一個複合型別。
同理,繼續定義這些型別的子元素,最終完成如下:
4、新增屬性。
5、新增約束元素個數。
-
選項1..1(Required)必須項,有且只有一個,而且必須有一個。
-
選項0..1(Optional)可選項,可以沒有這個元素,但是最多也只能有一個。
-
選項0..*(Zero or more)0個或者多個,可以沒有這個元素,也可以有多個。
-
選項1..*(Oneor more)1個或者多個,至少有一個,可以有多個。
6、最終完成如下圖所示:
7、生成對應的XML檔案如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
三、在MyEclipse中使用Schema
1、新建一個XML檔案
2、輸入檔名稱後,點選Next。
選中Create Xml file from XML scheam file
選中剛才定義的Schema檔案
暫時不需要這個名稱空間了。
點選Finish完成即可。
2、生成程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
3、測試。
你可以測試一下,現在所有的元素名稱都已經得到規範了,如:教師的元素名稱必須是teacher,學生的元素名稱必須是student。整個room元素中有且只能有一個teacher元素,這些你都可以自己做一下測試。如果你新增兩個teacher元素,MyEclipse的語法檢測就會報錯。