1 / 64

第 5 章 XML Schema文件

第 5 章 XML Schema文件. 簡介 XML Schema - 什麼是 XML Schema. 與 DTD 相同的, XML Schema 也是用於驗證 XML 文件。 XML Schema 是由微軟於 2000/02/09 向 W3C 提出,希望能夠取代 DTD 成為文件驗證的標準,且於 2001/05/02 成為建議標準( Recommendations )。 與 DTD 不同的, XML Schema 本身就是一份 Well-Formed XML 文件, DTD 並不是,從第 4 章的介紹,可以看出這點。.

Download Presentation

第 5 章 XML Schema文件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 5 章 XML Schema文件

  2. 簡介XML Schema - 什麼是XML Schema • 與DTD相同的,XML Schema也是用於驗證XML文件。 • XML Schema是由微軟於2000/02/09向W3C提出,希望能夠取代DTD成為文件驗證的標準,且於2001/05/02成為建議標準(Recommendations)。 • 與DTD不同的,XML Schema本身就是一份Well-Formed XML文件,DTD並不是,從第4章的介紹,可以看出這點。

  3. 簡介XML Schema - DTD與XML Schema的比較 • 運用DTD文件驗證XML文件,有以下缺點: • DTD文件並不使用XML文件的語法,而是使用另一套語法,因此,使用者必須多學習一個語法。 • DTD所支援的資料型態過少,甚至可以說,DTD並沒有資料型態的差別,因為DTD只有#PCDATA一種資料型態。 • 整份XML文件僅能套用一份DTD,且XML文件內出現的元素,必須於DTD完成定義。 • 對於文件結構的表達,DTD的彈性太低,舉例來說,定義文件內A元素擁有1個或0個B元素,DTD可以很容易地表達,但是若要表達A元素擁有0個或5個以下B元素,DTD就無法表達。

  4. 簡介XML Schema - DTD與XML Schema的比較 • XML Schema則針對DTD的缺點做了許多改進,說明如下: • XML Schema是一份Well-Formed XML,使用者只需學習XML Schema使用的元素名稱以及屬性,並不需要重新學習新的語法。 • XML Schema支援更多的資料型態,如:布林值、整數、日期、字串、浮點數…等。 • XML Schema使用開放架構,運用XML Schema的XML文件內,可以使用XML Schema並未定義的元素。運用DTD文件者,所使用的元素或屬性,則必須於DTD完成定義。

  5. 簡介XML Schema - DTD與XML Schema的比較 • 對於XML文件結構的定義,XML Schema具有更佳的彈性,可以定義類似A元素擁有0個或5個以下B元素的文件結構。 • XML Schema支援名稱空間,有較佳的擴充性。 • 針對不同的元素,XML Schema可以指定不同的XML Schema文件。 • 由於XML Schema就是XML文件,因此,可以透過存取XML文件的程式介面,修改或存取XML Schema。

  6. 簡介XML Schema - XML Schema文件的基本架構 • 以XML Schema文件定義XML文件內資料的型態,將包含元素、型態與屬性三個部份,並分別介紹於5-2-1節、5-3節與5-4節。 • 以XML文件內元素的型態來說,主要可分為簡單型態與複雜型態兩種。 • 以下敘述將定義型態為字串的title元素。

  7. 簡介XML Schema - XML Schema文件的基本架構 • 以下的XML Schema敘述則定義型態為複雜型態的book元素,該元素將依序包含title元素、subtitle元素、author元素、publisher元素與price元素。

  8. 簡介XML Schema - XML Schema文件的基本架構 • XML Schema文件內定義元素的方式有三種類型,一是直接在element標籤內,以complexType標籤定義元素的型態,進一步說明請參考5-2-1節,如下述:

  9. 簡介XML Schema - XML Schema文件的基本架構 • 另一種則是完成元素的定義,再以ref屬性參考至元素,進一步說明請參考5-2-2節。

  10. 簡介XML Schema - XML Schema文件的基本架構 • 另一種則是完成型態的定義,在宣告元素時,使用該型態,進一步說明請參考5-2-3節。

  11. XML Schema的基礎 - 元素的宣告語法 • 以下是XML Schema宣告元素的基本語法: <element name=元素名稱 minOccurs=最少發生次數 maxOccurs=最多發生次數 type=元素內容型態 default=預設值 fix=固定值 ref=參考元素> 元素內容 </element>

  12. XML Schema的基礎 - 元素的宣告語法 • 文字元素的宣告:對於未包含其他子元素的元素,僅需以空元素的方式宣告。 • 以下敘述將宣告title元素的內容為字串型態。

  13. XML Schema的基礎 - 元素的宣告語法 • 包含子元素的元素:對於包含其他子元素的元素,宣告時,除了element標籤外,還必須運用complexType標籤與sequence標籤(有關此兩標籤的說明,請參考5-2-3節與5-3-6節)。 • 以下敘述將定義book元素,包含title、subtitle、author、publisher、price子元素,且不限制出現次數:

  14. XML Schema的基礎 - 元素的宣告語法 • 元素個數的設定:對於元素個數的設定,將運用minOccurs與maxOccurs屬性控制,由於兩屬性的預設值均為1。若均不設定時,則代表該元素僅出現1次。下表將列出幾種常見的設定範例。

  15. XML Schema的基礎 - 元素的宣告語法 • 以下敘述宣告title元素時,未設定minOccurs與maxOccurs屬性,均採預設值,表元素僅出現1次。 • 以下敘述,將設定book元素出現至少1次(minOccurs屬性使用預設值),至多不限制次數。

  16. XML Schema的基礎 - 元素的宣告語法 • 預設值:設定文字元素的預設值時,可將元素的預設值設定為default屬性。當元素未設定值,剖析器將自動以此值設定元素。 • 以下敘述將設定author元素為string型態,且預設值為『郭尚君』。

  17. XML Schema的基礎 - 元素的宣告語法 • 固定值:設定文字元素的值為某固定值時,可將該固定值設定給fixed屬性。若元素有設定值時,必須設定為此值。 • 以下敘述將設定publisher元素為string型態,固定值為『文魁資訊』。

  18. XML Schema的基礎 - 元素的參考 • 5-2-1節介紹了XML Schema宣告元素的語法,但相信您也發現,若依照這個方式撰寫XML Schema文件,對於檢查結構再稍微複雜一些的XML文件,XML Schema文件的層級將非常深。 • 這個小節將介紹如何在宣告元素時,運用ref屬性,降低XML Schema文件的層級。 • 以下敘述將參考至已完成宣告的book元素。

  19. XML Schema的基礎 - 型態的宣告 • XML Schema文件宣告元素時,element標籤內包含的complexType標籤,可以獨立出來成為XML Schema文件定義元素型態的第三種宣告方式。 • 將complexType標籤獨立後,便可運用name屬性,定義complexType標籤所定義型態的名稱。定義元素時,將type屬性設定為型態的名稱,便可將元素定義為該資料型態。

  20. XML Schema的基礎 - 型態的宣告 • 以下是在bookch5_xs.xsd內,定義book元素的敘述。

  21. XML Schema的基礎 - 型態的宣告 • 若將complexType標籤從element標籤獨立出來,完成bookType型態的定義。宣告book元素時,便可將type屬性設定為bookType型態。

  22. 資料型態的宣告 - 內建資料型別 • 下表為基本資料型別(Primitive datatypes)的說明。

  23. 資料型態的宣告 - 內建資料型別

  24. 資料型態的宣告 - 內建資料型別

  25. 資料型態的宣告 - 內建資料型別 • 下表將說明衍生資料型態(Derived datatypes),以及各資料的衍生來源資料型態。

  26. 資料型態的宣告 - 內建資料型別

  27. 資料型態的宣告 - 內建資料型別

  28. 資料型態的宣告 - 內建資料型別

  29. 資料型態的宣告- 自訂簡單資料型別–simpleType • simpleType標籤將可以內建資料型態為基礎,衍生出自訂的資料型態。 • 以下是simpleType的定義語法: <simpleType name=型態名稱> 元素內容 </simpleType>

  30. 資料型態的宣告- restriction標籤的使用 • simpleType標籤內可運用restriction標籤,定義資料型態的限制條件。語法如下: <restriction base=基本型態> 細節描述元素 </restriction>

  31. 資料型態的宣告- restriction標籤的使用 • minExclusive、maxExclusiveminExclusive標籤用於設定元素內容的最小值,但不包含設定值,設定效果相當於大於(>)。maxExclusive標籤用於設定元素內容的最大值,但不包含設定值,設定效果相當於小於(<)。 • 以下敘述,將宣告priceType型態,並限制該型態之元素的內容大於300(不含),小於1100(不含)。

  32. 資料型態的宣告- restriction標籤的使用 • minInclusive、maxInclusiveminInclusive標籤用於設定元素內容的最小值,且包含設定值,設定效果相當於大於等於(>=)。maxInclusive標籤用於設定元素內容的最大值,但不包含設定值,設定效果相當於小於等於(<=)。 • 以下敘述將宣告priceType型態,限制此型態之元素的內容大於等於300,小於等於1100。

  33. 資料型態的宣告- restriction標籤的使用 • totalDigits、fractionDigitstotalDigits標籤用於設定數值型態的元素,其數值的總位數(包含小數部份),fractionDigits標籤則控制小數點位數。兩者的設定值,均必須為非負整數。 • 以下敘述將定義priceType型態,衍生於float型態,且元素內容有5位數字。

  34. 資料型態的宣告- restriction標籤的使用 • length、minLength、maxLengthlength標籤用於控制元素內容的字串長度。minLength、maxLength標籤則分別控制元素內容的最小長度與最大長度。此三標籤的設定值,均必須為非負整數。使用Big5編碼時,一個中文字的長度為2。 • 以下敘述將定義publisherType型態,衍生於string型態,且字串長度為8。

  35. 資料型態的宣告- restriction標籤的使用 • 以下敘述將定義titleType型態,衍生於string型態,且內容字串的最小長度為5,最大長度為40。

  36. 資料型態的宣告- restriction標籤的使用 • enumerationenumeration標籤將以列舉方式定義元素可設定的內容。以下敘述將定義authorType型態衍生於string型態,且內容可為『郭尚君』或『馬孝瑀』。

  37. 資料型態的宣告- restriction標籤的使用 • whiteSpace定義此型態對於內容中空白字元的處理方式,設定值可為preserve、replace、collapse。各設定值的意義說明如下: • preserve - 不處理空白字元。 • replace - 表#x9(tab)、#xA(line feed)與#xD(carriage return)將被取代為#x20(space)。 • collapse - 連續的空白(#x20),將視為1個空白。 • 以下敘述將定義titleType型態,衍生於string型態,且設定剖析器不處理內容的空白。

  38. 資料型態的宣告- restriction標籤的使用 • pattern定義此型態元素內容格式的正規語法,下表將說明常用的語法:

  39. 資料型態的宣告- restriction標籤的使用

  40. 資料型態的宣告- restriction標籤的使用 • 若欲使用正規語法內的符號時,則可在符號前加上跳脫字元 - 『\』,如:『\?』即代表『?』。 • 以下敘述將定義isbnType型態,衍生於string型態,並運用pattern設定其格式。

  41. 資料型態的宣告 - list標籤 • list標籤用於配合simpleType標籤,定義資料內容為以空白間隔的資料串列型態,語法如下: <list itemType=資料型態/> • 以下敘述將定義authorlistType型態為authorType型態資料的串列,並運用enumeration標籤,定義authorType型態資料可設定的元素值(這樣也同時達到限制authorlistType設定值內容的目的)。

  42. 資料型態的宣告 - list標籤 • 以下敘述將衍生authorlistType型態,定義出限制資料串列內資料個數至少1個至多4個的authorlistlenType型態。

  43. 資料型態的宣告 - list標籤 • 以上敘述您亦可直接將定義authorType型態的simpleType標籤放到list標籤內,便可省略list標籤的itemType屬性。

  44. 資料型態的宣告 - union標籤 • 若元素的內容有兩種以上不同資料型態時,可以運用union標籤。語法如下: <union itemType=資料型態串列/> • 以下敘述將定義isbnType型態包含isbnType1與isbnType2,兩種資料型態。

  45. 資料型態的宣告 - union標籤 • 您亦可直接將isbnType1與isbnType2的宣告,直接置於union標籤,即可省略memberTypes屬性。

  46. 資料型態的宣告- 自訂複雜資料型別–complexType • 以下為complexType標籤的運用語法: <complexType name=型態名稱 mixed=是否為混合內容> 元素內容 </complexType>

  47. 資料型態的宣告- 自訂複雜資料型別–complexType • 以下為complexType標籤的運用語法: <complexType name=型態名稱 mixed=是否為混合內容> 元素內容 </complexType> • 特定順序限制的sequence標籤運用complexType標籤定義巢狀元素型態時,若使用sequence標籤,則被包含元素將限制元素依照宣告順序出現。

  48. 資料型態的宣告- 自訂複雜資料型別–complexType • 不限制順序的all標籤運用complexType標籤定義巢狀元素型態時,若使用all標籤,則被包含的元素,出現的順序並不限制,但限制被包含元素的maxOccurs屬性,僅能設為1,minOccurs屬性則可被設為0或1,預設值為1。

  49. 資料型態的宣告- 自訂複雜資料型別–complexType • 選擇元素的choice標籤運用complexType標籤定義巢狀元素型態時,若使用choice標籤,將可從包含元素裡,僅選擇一個元素出現。在choice標籤內,定義可選擇性元素的標籤,除了element標籤外,還有sequence、group與choice。

  50. 資料型態的宣告- 混合內容元素、空元素與未知型態元素的宣告 • 選擇元素的choice標籤運用complexType標籤定義巢狀元素型態時,若使用choice標籤,將可從包含元素裡,僅選擇一個元素出現。在choice標籤內,定義可選擇性元素的標籤,除了element標籤外,還有sequence、group與choice。

More Related