64
5 5 XML Schema XML Schema 第第 第第

第 5 章 XML Schema文件

Embed Size (px)

DESCRIPTION

第 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 章的介紹,可以看出這點。. - PowerPoint PPT Presentation

Citation preview

Page 1: 第  5  章  XML Schema文件

第 第 5 5 章 章 XML SchemaXML Schema 文件文件

Page 2: 第  5  章  XML Schema文件

簡介簡介 XML Schema XML Schema - - 什麼是什麼是 XML XML SchemaSchema

與與 DTDDTD 相同的,相同的, XML SchemaXML Schema 也是用於驗證也是用於驗證 XMLXML文件。文件。

XML SchemaXML Schema 是由微軟於是由微軟於 2000/02/092000/02/09 向向 W3CW3C 提出,提出,希望能夠取代希望能夠取代 DTDDTD 成為文件驗證的標準,且於成為文件驗證的標準,且於2001/05/022001/05/02 成為建議標準(成為建議標準( RecommendationsRecommendations )。)。

與與 DTDDTD 不同的,不同的, XML SchemaXML Schema 本身就是一份本身就是一份 Well-Well-Formed XMLFormed XML 文件,文件, DTDDTD 並不是,從第並不是,從第 44 章的介紹,章的介紹,可以看出這點。可以看出這點。

Page 3: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - DTD - DTD 與與 XML SchemaXML Schema 的比較的比較

運用運用 DTDDTD 文件驗證文件驗證 XMLXML 文件,有以下缺點:文件,有以下缺點: DTDDTD 文件並不使用文件並不使用 XMLXML 文件的語法,而是使用另文件的語法,而是使用另

一套語法,因此,使用者必須多學習一個語法。一套語法,因此,使用者必須多學習一個語法。 DTDDTD 所支援的資料型態過少,甚至可以說,所支援的資料型態過少,甚至可以說, DTDDTD

並沒有資料型態的差別,因為並沒有資料型態的差別,因為 DTDDTD 只有只有#PCDATA#PCDATA 一種資料型態。一種資料型態。

整份整份 XMLXML 文件僅能套用一份文件僅能套用一份 DTDDTD ,且,且 XMLXML 文件文件內出現的元素,必須於內出現的元素,必須於 DTDDTD 完成定義。完成定義。

對於文件結構的表達,對於文件結構的表達, DTDDTD 的彈性太低,舉例來的彈性太低,舉例來說,定義文件內說,定義文件內 AA 元素擁有元素擁有 11 個或個或 00 個個 BB 元元素,素, DTDDTD 可以很容易地表達,但是若要表達可以很容易地表達,但是若要表達 AA 元元素擁有素擁有 00 個或個或 55 個以下個以下 BB 元素,元素, DTDDTD 就無法表達。就無法表達。

Page 4: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - DTD - DTD 與與 XML SchemaXML Schema 的比較的比較

XML SchemaXML Schema 則針對則針對 DTDDTD 的缺點做了許多改進,說明的缺點做了許多改進,說明如下:如下: XML SchemaXML Schema 是一份是一份 Well-Formed XMLWell-Formed XML ,使用者,使用者

只需學習只需學習 XML SchemaXML Schema 使用的元素名稱以及屬性,使用的元素名稱以及屬性,並不需要重新學習新的語法。並不需要重新學習新的語法。

XML SchemaXML Schema 支援更多的資料型態,如:布林值、支援更多的資料型態,如:布林值、整數、日期、字串、浮點數整數、日期、字串、浮點數……等。等。

XML SchemaXML Schema 使用開放架構,運用使用開放架構,運用 XML SchemaXML Schema的的 XMLXML 文件內,可以使用文件內,可以使用 XML SchemaXML Schema 並未定義並未定義的元素。運用的元素。運用 DTDDTD 文件者,所使用的元素或屬性,文件者,所使用的元素或屬性,則必須於則必須於 DTDDTD 完成定義。完成定義。

Page 5: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - DTD - DTD 與與 XML SchemaXML Schema 的比較的比較

對於對於 XMLXML 文件結構的定義,文件結構的定義, XML SchemaXML Schema 具有更具有更佳的彈性,可以定義類似佳的彈性,可以定義類似 AA 元素擁有元素擁有 00 個或個或 55 個以個以下下 BB 元素的文件結構。元素的文件結構。

XML SchemaXML Schema 支援名稱空間,有較佳的擴充性。支援名稱空間,有較佳的擴充性。 針對不同的元素,針對不同的元素, XML SchemaXML Schema 可以指定不同的可以指定不同的

XML SchemaXML Schema 文件。文件。 由於由於 XML SchemaXML Schema 就是就是 XMLXML 文件,因此,可以透文件,因此,可以透

過存取過存取 XMLXML 文件的程式介面,修改或存取文件的程式介面,修改或存取 XML XML SchemaSchema 。。

Page 6: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - XML Schema - XML Schema 文件的基本架構文件的基本架構

以以 XML SchemaXML Schema 文件定義文件定義 XMLXML 文件內資料的文件內資料的型態,將包含元素、型態與屬性三個部份,並型態,將包含元素、型態與屬性三個部份,並分別介紹於分別介紹於 5-2-15-2-1 節、節、 5-35-3 節與節與 5-45-4 節。 節。

以以 XMLXML 文件內元素的型態來說,主要可分為文件內元素的型態來說,主要可分為簡單型態與複雜型態兩種。簡單型態與複雜型態兩種。

以下敘述將定義型態為字串的以下敘述將定義型態為字串的 titletitle 元素。 元素。

Page 7: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - XML Schema - XML Schema 文件的基本架構文件的基本架構

以下的以下的 XML SchemaXML Schema 敘述則定義型態為複雜型敘述則定義型態為複雜型態的態的 bookbook 元素,該元素將依序包含元素,該元素將依序包含 titletitle 元素、元素、subtitlesubtitle 元素、元素、 authorauthor 元素、元素、 publisherpublisher 元素與元素與priceprice 元素。元素。

Page 8: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - XML Schema - XML Schema 文件的基本架構文件的基本架構

XML SchemaXML Schema 文件內定義元素的方式有三種類文件內定義元素的方式有三種類型,一是直接在型,一是直接在 elementelement 標籤內,以標籤內,以complexTypecomplexType 標籤定義元素的型態,進一步說標籤定義元素的型態,進一步說明請參考明請參考 5-2-15-2-1 節,如下述:節,如下述:

Page 9: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - XML Schema - XML Schema 文件的基本架構文件的基本架構

另一種則是完成元素的定義,再以另一種則是完成元素的定義,再以 refref 屬性參屬性參考至元素,進一步說明請參考考至元素,進一步說明請參考 5-2-25-2-2 節。節。

Page 10: 第  5  章  XML Schema文件

簡介簡介 XML SchemaXML Schema - XML Schema - XML Schema 文件的基本架構文件的基本架構

另一種則是完成型態的定義,在宣告元素時,另一種則是完成型態的定義,在宣告元素時,使用該型態,進一步說明請參考使用該型態,進一步說明請參考 5-2-35-2-3 節。節。

Page 11: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

以下是以下是 XML SchemaXML Schema 宣告元素的基本語法:宣告元素的基本語法:<element<elementname=name= 元素名稱元素名稱

minOccurs=minOccurs= 最少發生次數最少發生次數maxOccurs=maxOccurs= 最多發生次數最多發生次數type=type= 元素內容型態元素內容型態default=default= 預設值預設值fix=fix= 固定值固定值ref=ref= 參考元素參考元素 >>

元素內容元素內容</element></element>

Page 12: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

文字元素的宣告:文字元素的宣告:對於未包含其他子元素的元素,僅需以空元素對於未包含其他子元素的元素,僅需以空元素的方式宣告。的方式宣告。

以下敘述將宣告以下敘述將宣告 titletitle 元素的內容為字串型態。元素的內容為字串型態。

Page 13: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法 包含子元素的元素:包含子元素的元素:

對於包含其他子元素的元素,宣告時,除了對於包含其他子元素的元素,宣告時,除了 elementelement 標籤外,還標籤外,還必須運用必須運用 complexTypecomplexType 標籤與標籤與 sequencesequence 標籤(有關此兩標籤的標籤(有關此兩標籤的說明,請參考說明,請參考 5-2-35-2-3 節與節與 5-3-65-3-6 節)。節)。

以下敘述將定義以下敘述將定義 bookbook 元素,包含元素,包含titletitle 、、 subtitlesubtitle 、、 authorauthor 、、 publisherpublisher 、、 priceprice 子元素,且不限制子元素,且不限制出現次數:出現次數:

Page 14: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

元素個數的設定:元素個數的設定:對於元素個數的設定,將運用對於元素個數的設定,將運用 minOccursminOccurs 與與maxOccursmaxOccurs 屬性控制,由於兩屬性的預設值均為屬性控制,由於兩屬性的預設值均為 11 。。若均不設定時,則代表該元素僅出現若均不設定時,則代表該元素僅出現 11 次。下表將列次。下表將列出幾種常見的設定範例。出幾種常見的設定範例。

Page 15: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

以下敘述宣告以下敘述宣告 titletitle 元素時,未設定元素時,未設定 minOccursminOccurs 與與maxOccursmaxOccurs 屬性,均採預設值,表元素僅出現屬性,均採預設值,表元素僅出現 11次。次。

以下敘述,將設定以下敘述,將設定 bookbook 元素出現至少元素出現至少 11 次次(( minOccursminOccurs 屬性使用預設值),至多不限制次屬性使用預設值),至多不限制次數。數。

Page 16: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

預設值:預設值:設定文字元素的預設值時,可將元素的預設值設定文字元素的預設值時,可將元素的預設值設定為設定為 defaultdefault 屬性。當元素未設定值,剖析屬性。當元素未設定值,剖析器將自動以此值設定元素。器將自動以此值設定元素。

以下敘述將設定以下敘述將設定 authorauthor 元素為元素為 stringstring 型態,且型態,且預設值為預設值為『『郭尚君郭尚君』』。。

Page 17: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素的宣元素的宣告語法告語法

固定值:固定值:設定文字元素的值為某固定值時,可將該固定設定文字元素的值為某固定值時,可將該固定值設定給值設定給 fixedfixed 屬性。若元素有設定值時,必屬性。若元素有設定值時,必須設定為此值。須設定為此值。

以下敘述將設定以下敘述將設定 publisherpublisher 元素為元素為 stringstring 型態,型態,固定值為固定值為『『文魁資訊文魁資訊』』。。

Page 18: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 元素元素的參考的參考

5-2-15-2-1 節介紹了節介紹了 XML SchemaXML Schema 宣告元素的語法,但相宣告元素的語法,但相信您也發現,若依照這個方式撰寫信您也發現,若依照這個方式撰寫 XML SchemaXML Schema 文件,文件,對於檢查結構再稍微複雜一些的對於檢查結構再稍微複雜一些的 XMLXML 文件,文件, XML XML SchemaSchema 文件的層級將非常深。文件的層級將非常深。

這個小節將介紹如何在宣告元素時,運用這個小節將介紹如何在宣告元素時,運用 refref 屬性,降屬性,降低低 XML SchemaXML Schema 文件的層級。文件的層級。

以下敘述將參考至已完成宣告的以下敘述將參考至已完成宣告的 bookbook 元素。元素。

Page 19: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 型態型態的宣告的宣告

XML SchemaXML Schema 文件宣告元素時,文件宣告元素時, elementelement 標籤內包含標籤內包含的的 complexTypecomplexType 標籤,可以獨立出來成為標籤,可以獨立出來成為 XML XML SchemaSchema 文件定義元素型態的第三種宣告方式。文件定義元素型態的第三種宣告方式。

將將 complexTypecomplexType 標籤獨立後,便可運用標籤獨立後,便可運用 namename 屬性,屬性,定義定義 complexTypecomplexType 標籤所定義型態的名稱。定義元素標籤所定義型態的名稱。定義元素時,將時,將 typetype 屬性設定為型態的名稱,便可將元素定義屬性設定為型態的名稱,便可將元素定義為該資料型態。為該資料型態。

Page 20: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 型態型態的宣告的宣告

以下是在以下是在 bookch5_xs.xsdbookch5_xs.xsd 內,定義內,定義 bookbook 元素的敘述。元素的敘述。

Page 21: 第  5  章  XML Schema文件

XML SchemaXML Schema 的基礎 的基礎 - - 型態型態的宣告的宣告

若將若將 complexTypecomplexType 標籤從標籤從 elementelement 標籤獨立出標籤獨立出來,完成來,完成 bookTypebookType 型態的定義。宣告型態的定義。宣告 bookbook 元元素時,便可將素時,便可將 typetype 屬性設定為屬性設定為 bookTypebookType 型態。型態。

Page 22: 第  5  章  XML Schema文件

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

Page 23: 第  5  章  XML Schema文件

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

Page 24: 第  5  章  XML Schema文件

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

Page 25: 第  5  章  XML Schema文件

資料型態的宣告 資料型態的宣告 - - 內建資料型別內建資料型別 下表將說明衍生資料型態(下表將說明衍生資料型態( Derived datatypesDerived datatypes ),以),以

及各資料的衍生來源資料型態。及各資料的衍生來源資料型態。

Page 26: 第  5  章  XML Schema文件

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

Page 27: 第  5  章  XML Schema文件

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

Page 28: 第  5  章  XML Schema文件

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

Page 29: 第  5  章  XML Schema文件

simpleTypesimpleType 標籤將可以內建資料型態為基礎,標籤將可以內建資料型態為基礎,衍生出自訂的資料型態。衍生出自訂的資料型態。

以下是以下是 simpleTypesimpleType 的定義語法:的定義語法:<simpleType name=<simpleType name= 型態名稱型態名稱 >>

元素內容元素內容</simpleType></simpleType>

資料型態的宣告資料型態的宣告- - 自訂簡單資料型別自訂簡單資料型別–– simpleTypesimpleType

Page 30: 第  5  章  XML Schema文件

simpleTypesimpleType 標籤內可運用標籤內可運用 restrictionrestriction 標籤,標籤,定義資料型態的限制條件。語法如下:定義資料型態的限制條件。語法如下:

<restriction base=<restriction base= 基本型態基本型態 >>

細節描述元素細節描述元素</restriction></restriction>

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

Page 31: 第  5  章  XML Schema文件

minExclusiveminExclusive 、、 maxExclusivemaxExclusiveminExclusiveminExclusive 標籤用於設定元素內容的最小值,但不標籤用於設定元素內容的最小值,但不包含設定值,設定效果相當於大於包含設定值,設定效果相當於大於(( >> )。)。 maxExclusivemaxExclusive 標籤用於設定元素內容的最標籤用於設定元素內容的最大值,但不包含設定值,設定效果相當於小於(大值,但不包含設定值,設定效果相當於小於( << )。)。

以下敘述,將宣告以下敘述,將宣告 priceTypepriceType 型態,並限制該型態之型態,並限制該型態之元素的內容大於元素的內容大於 300300 (不含),小於(不含),小於 11001100 (不含)。(不含)。

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

Page 32: 第  5  章  XML Schema文件

minInclusiveminInclusive 、、 maxInclusivemaxInclusiveminInclusiveminInclusive 標籤用於設定元素內容的最小值,且包標籤用於設定元素內容的最小值,且包含設定值,設定效果相當於大於等於含設定值,設定效果相當於大於等於(( >=>= )。)。 maxInclusivemaxInclusive 標籤用於設定元素內容的最標籤用於設定元素內容的最大值,但不包含設定值,設定效果相當於小於等於大值,但不包含設定值,設定效果相當於小於等於(( <=<= )。)。

以下敘述將宣告以下敘述將宣告 priceTypepriceType 型態,限制此型態之元素型態,限制此型態之元素的內容大於等於的內容大於等於 300300 ,小於等於,小於等於 11001100 。。

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

Page 33: 第  5  章  XML Schema文件

totalDigitstotalDigits 、、 fractionDigitsfractionDigitstotalDigitstotalDigits 標籤用於設定數值型態的元素,其數值的標籤用於設定數值型態的元素,其數值的總位數(包含小數部份),總位數(包含小數部份), fractionDigitsfractionDigits 標籤則控標籤則控制小數點位數。兩者的設定值,均必須為非負整數。制小數點位數。兩者的設定值,均必須為非負整數。

以下敘述將定義以下敘述將定義 priceTypepriceType 型態,衍生於型態,衍生於 floatfloat 型態,型態,且元素內容有且元素內容有 55位數字。位數字。

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

Page 34: 第  5  章  XML Schema文件

lengthlength 、、 minLengthminLength 、、 maxLengthmaxLengthlengthlength 標籤用於控制元素內容的字串長標籤用於控制元素內容的字串長度。度。 minLengthminLength 、、 maxLengthmaxLength 標籤則分別控制元素標籤則分別控制元素內容的最小長度與最大長度。此三標籤的設定值,均內容的最小長度與最大長度。此三標籤的設定值,均必須為非負整數。使用必須為非負整數。使用 Big5Big5編碼時,一個中文字的編碼時,一個中文字的長度為長度為 22 。。

以下敘述將定義以下敘述將定義 publisherTypepublisherType 型態,衍生於型態,衍生於 stringstring型態,且字串長度為型態,且字串長度為 88 。。

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

Page 35: 第  5  章  XML Schema文件

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

以下敘述將定義以下敘述將定義 titleTypetitleType 型態,衍生於型態,衍生於 stringstring型態,且內容字串的最小長度為型態,且內容字串的最小長度為 55 ,最大長度,最大長度為為 4040 。。

Page 36: 第  5  章  XML Schema文件

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

enumerationenumerationenumerationenumeration 標籤將以列舉方式定義元素可設標籤將以列舉方式定義元素可設定的內容。以下敘述將定義定的內容。以下敘述將定義 authorTypeauthorType 型態型態衍生於衍生於 stringstring 型態,且內容可為型態,且內容可為『『郭尚君郭尚君』』或或『『馬孝瑀馬孝瑀』』。。

Page 37: 第  5  章  XML Schema文件

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

定義此型態對於內容中空白字元的處理方式,設定值可為定義此型態對於內容中空白字元的處理方式,設定值可為preservepreserve 、、 replacereplace 、、 collapsecollapse 。各設定值的意義說明如下:。各設定值的意義說明如下: preserve - preserve - 不處理空白字元。不處理空白字元。 replace - replace - 表表 #x9(tab)#x9(tab) 、、 #xA(line feed)#xA(line feed) 與與 #xD(carriage #xD(carriage

return)return) 將被取代為將被取代為 #x20(space)#x20(space) 。。 collapse - collapse - 連續的空白連續的空白 (#x20)(#x20) ,將視為,將視為 11 個空白。個空白。

以下敘述將定義以下敘述將定義 titleTypetitleType 型態,衍生於型態,衍生於 stringstring 型態,且設定剖析型態,且設定剖析器不處理內容的空白。器不處理內容的空白。

Page 38: 第  5  章  XML Schema文件

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

定義此型態元素內容格式的正規語法,下表將說明常定義此型態元素內容格式的正規語法,下表將說明常用的語法:用的語法:

Page 39: 第  5  章  XML Schema文件

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

Page 40: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告- restriction- restriction 標籤的使用標籤的使用 若欲使用正規語法內的符號時,則可在符號前加上跳若欲使用正規語法內的符號時,則可在符號前加上跳脫字元 脫字元 - - 『『 \\ 』』,如:,如:『『 \?\? 』』即代表即代表『『 ?? 』』。。

以下敘述將定義以下敘述將定義 isbnTypeisbnType 型態,衍生於型態,衍生於 stringstring 型態,型態,並運用並運用 patternpattern 設定其格式。設定其格式。

Page 41: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - list- list 標籤標籤

listlist 標籤用於配合標籤用於配合 simpleTypesimpleType 標籤,定義資料內容為以空白間隔標籤,定義資料內容為以空白間隔的資料串列型態,語法如下:的資料串列型態,語法如下:<list itemType=<list itemType= 資料型態資料型態 />/>

以下敘述將定義以下敘述將定義 authorlistTypeauthorlistType 型態為型態為 authorTypeauthorType 型態資料的串型態資料的串列,並運用列,並運用 enumerationenumeration 標籤,定義標籤,定義 authorTypeauthorType 型態資料可設定型態資料可設定的元素值(這樣也同時達到限制的元素值(這樣也同時達到限制 authorlistTypeauthorlistType 設定值內容的目設定值內容的目的)。的)。

Page 42: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - list- list 標籤標籤

以下敘述將衍生以下敘述將衍生 authorlistTypeauthorlistType 型態,定義出限制資型態,定義出限制資料串列內資料個數至少料串列內資料個數至少 11 個至多個至多 44 個的個的authorlistlenTypeauthorlistlenType 型態。型態。

Page 43: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - list- list 標籤標籤

以上敘述您亦可直接將定義以上敘述您亦可直接將定義 authorTypeauthorType 型態的型態的simpleTypesimpleType 標籤放到標籤放到 listlist 標籤內,便可省略標籤內,便可省略 listlist 標籤的標籤的itemTypeitemType 屬性。屬性。

Page 44: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - union- union 標籤標籤

若元素的內容有兩種以上不同資料型態時,可以運用若元素的內容有兩種以上不同資料型態時,可以運用unionunion 標籤。語法如下:標籤。語法如下:<union itemType=<union itemType= 資料型態串列資料型態串列 />/>

以下敘述將定義以下敘述將定義 isbnTypeisbnType 型態包含型態包含 isbnType1isbnType1 與與isbnType2isbnType2 ,兩種資料型態。,兩種資料型態。

Page 45: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - union- union 標籤標籤

您亦可直接將您亦可直接將 isbnType1isbnType1 與與 isbnType2isbnType2 的宣告,直接的宣告,直接置於置於 unionunion 標籤,即可省略標籤,即可省略 memberTypesmemberTypes 屬性。屬性。

Page 46: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 自訂複雜資料型別自訂複雜資料型別–– complexTypecomplexType

以下為以下為 complexTypecomplexType 標籤的運用語法:標籤的運用語法:<complexType name=<complexType name= 型態名稱 型態名稱 mixed=mixed= 是否為混合內是否為混合內

容容 >>

元素內容元素內容</complexType></complexType>

Page 47: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 自訂複雜資料型別自訂複雜資料型別–– complexTypecomplexType

以下為以下為 complexTypecomplexType 標籤的運用語法:標籤的運用語法:<complexType name=<complexType name= 型態名稱 型態名稱 mixed=mixed= 是否為混合內容是否為混合內容

>>

元素內容元素內容</complexType></complexType>

特定順序限制的特定順序限制的 sequencesequence 標籤標籤運用運用 complexTypecomplexType 標籤定義巢狀元素型態時,若使用標籤定義巢狀元素型態時,若使用sequencesequence 標籤,則被包含元素將限制元素依照宣告順序出現。標籤,則被包含元素將限制元素依照宣告順序出現。

Page 48: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 自訂複雜資料型別自訂複雜資料型別–– complexTypecomplexType

不限制順序的不限制順序的 allall 標籤標籤運用運用 complexTypecomplexType 標籤定義巢狀元素型態時,若使標籤定義巢狀元素型態時,若使用用 allall 標籤,則被包含的元素,出現的順序並不限制,標籤,則被包含的元素,出現的順序並不限制,但限制被包含元素的但限制被包含元素的 maxOccursmaxOccurs 屬性,僅能設為屬性,僅能設為 11 ,,minOccursminOccurs 屬性則可被設為屬性則可被設為 00 或或 11 ,預設值為,預設值為 11 。。

Page 49: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 自訂複雜資料型別自訂複雜資料型別–– complexTypecomplexType

選擇元素的選擇元素的 choicechoice 標籤標籤運用運用 complexTypecomplexType 標籤定義巢狀元素型態時,若使標籤定義巢狀元素型態時,若使用用 choicechoice 標籤,將可從包含元素裡,僅選擇一個元素標籤,將可從包含元素裡,僅選擇一個元素出現。在出現。在 choicechoice 標籤內,定義可選擇性元素的標籤,標籤內,定義可選擇性元素的標籤,除了除了 elementelement 標籤外,還有標籤外,還有 sequencesequence 、、 groupgroup 與與choicechoice 。。

Page 50: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 混合內容元素、空元素與未知型態元素的宣告混合內容元素、空元素與未知型態元素的宣告

選擇元素的選擇元素的 choicechoice 標籤標籤運用運用 complexTypecomplexType 標籤定義巢狀元素型態時,若使標籤定義巢狀元素型態時,若使用用 choicechoice 標籤,將可從包含元素裡,僅選擇一個元素標籤,將可從包含元素裡,僅選擇一個元素出現。在出現。在 choicechoice 標籤內,定義可選擇性元素的標籤,標籤內,定義可選擇性元素的標籤,除了除了 elementelement 標籤外,還有標籤外,還有 sequencesequence 、、 groupgroup 與與choicechoice 。。

Page 51: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 混合內容元素、空元素與未知型態元素的宣告混合內容元素、空元素與未知型態元素的宣告

混合元素的宣告混合元素的宣告欲宣告內容為文字與元素混合的元素型態,必須在宣欲宣告內容為文字與元素混合的元素型態,必須在宣告型態時,將告型態時,將 complexTypecomplexType 標籤的標籤的 mixedmixed 屬性設為屬性設為truetrue 。。

Page 52: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 混合內容元素、空元素與未知型態元素的宣告混合內容元素、空元素與未知型態元素的宣告

空元素空元素宣告型態為空元素的資料型態時,僅需運用宣告型態為空元素的資料型態時,僅需運用complexTypecomplexType 空元素。空元素。

當然亦可直接將此當然亦可直接將此 complexTypecomplexType 標籤置於標籤置於 elementelement 標標籤內。籤內。

Page 53: 第  5  章  XML Schema文件

資料型態的宣告資料型態的宣告 - - 混合內容元素、空元素與未知型態元素的宣告混合內容元素、空元素與未知型態元素的宣告

未知型態元素未知型態元素若定義包含未知元素型態的資料型態,可運用若定義包含未知元素型態的資料型態,可運用 anyany 標標籤。語法如下:籤。語法如下:

<xs:any namespace=<xs:any namespace= 名稱空間名稱空間processContents=processContents= 是否處理元素內容是否處理元素內容minOccurs=minOccurs= 最少個數 最少個數 maxOccurs=maxOccurs= 最多最多

個數個數 />/>

Page 54: 第  5  章  XML Schema文件

屬性的定義 屬性的定義 - - 定義屬性定義屬性

屬性的宣告語法如下:屬性的宣告語法如下:<xs:attribute name=<xs:attribute name= 屬性名稱 屬性名稱

type=type= 資料型態 資料型態 use=use= 使用方式使用方式default=default= 預設值 預設值 fixed=fixed= 固定值固定值ref=ref= 屬性參考屬性參考 />/>

Page 55: 第  5  章  XML Schema文件

屬性的定義 屬性的定義 - - 定義屬性定義屬性

巢狀元素巢狀元素設定巢狀元素的屬性值時,只要在設定巢狀元素的屬性值時,只要在 complexTypecomplexType 標籤內,標籤內,運用運用 attributeattribute 標籤,定義屬性值即可。標籤,定義屬性值即可。

以下敘述將宣告以下敘述將宣告 bookTypebookType 資料型別為巢狀元素型態,並擁資料型別為巢狀元素型態,並擁有有 salesale 屬性,預設值為屬性,預設值為 YY ,其型態將運用,其型態將運用 simpleTypesimpleType 標籤標籤與與 restrictionrestriction 標籤定義,衍生自標籤定義,衍生自 stringstring 型態。型態。

Page 56: 第  5  章  XML Schema文件

屬性的定義 屬性的定義 - - 定義屬性定義屬性

空元素空元素若在若在 complexTypecomplexType 標籤內,刪除元素排列標籤,以及標籤內,刪除元素排列標籤,以及標籤內的元素宣告,便可宣告出擁有屬性的空元素。標籤內的元素宣告,便可宣告出擁有屬性的空元素。

以下敘述,則宣告以下敘述,則宣告 authorTypeauthorType 為空元素資料型態,且為空元素資料型態,且擁有擁有 stringstring 型態的型態的 namename 屬性。屬性。

Page 57: 第  5  章  XML Schema文件

屬性的定義 屬性的定義 - - 定義屬性定義屬性

文字元素文字元素若是欲定義文字元素擁有屬性時,則必須運用若是欲定義文字元素擁有屬性時,則必須運用simpleContentsimpleContent 標籤,配合標籤,配合 extensionextension 標籤,宣告屬性標籤,宣告屬性的型態。的型態。

以下敘述將宣告以下敘述將宣告 publisherTypepublisherType 型態衍生於型態衍生於 stringstring 型態,型態,並擁有並擁有 teltel 屬性與屬性與 FAXFAX 屬性的文字元素型態。屬性的文字元素型態。

Page 58: 第  5  章  XML Schema文件

屬性的定義 屬性的定義 - - 未知類型的屬性未知類型的屬性

定義元素擁有未知類型的屬性時,可使用定義元素擁有未知類型的屬性時,可使用anyAttributeanyAttribute 標籤,語法如下:標籤,語法如下:<xs:anyAttribute namespace=<xs:anyAttribute namespace= 名稱空間名稱空間

processContents=processContents= 是否處理屬性內是否處理屬性內容容 />/>

Page 59: 第  5  章  XML Schema文件

群組標籤 群組標籤 - - 元素群組元素群組

對於某一組常用元素,可以運用對於某一組常用元素,可以運用 groupgroup 標籤群組這些標籤群組這些元素,方便在元素,方便在 SchemaSchema 文件的其他部份引用,文件的其他部份引用, groupgroup標籤的使用語法如下:標籤的使用語法如下:

<group<group name=name= 群組名稱 群組名稱 ref=ref= 參考群組參考群組minOccurs=minOccurs= 最少發生次數 最少發生次數 maxOccurs=maxOccurs= 最多發生次數最多發生次數 >>

群組內容群組內容</group></group>

Page 60: 第  5  章  XML Schema文件

群組標籤 群組標籤 - - 元素群組元素群組

對於某一組常用元素,可以運用對於某一組常用元素,可以運用 groupgroup 標籤群組這些標籤群組這些元素,方便在元素,方便在 SchemaSchema 文件的其他部份引用,文件的其他部份引用, groupgroup標籤的使用語法如下:標籤的使用語法如下:

<group<group name=name= 群組名稱 群組名稱 ref=ref= 參考群組參考群組minOccurs=minOccurs= 最少發生次數 最少發生次數 maxOccurs=maxOccurs= 最多發生次數最多發生次數 >>

群組內容群組內容</group></group>

以下敘述將定義以下敘述將定義 connectDataconnectData 群組,包含群組,包含 teltel 、、 FAXFAX 、、E-MailE-Mail 三種元素。三種元素。

Page 61: 第  5  章  XML Schema文件

群組標籤 群組標籤 - - 元素群組元素群組

以下敘述將在運用以下敘述將在運用 complexTypecomplexType 標籤定義資料標籤定義資料型態時,運用型態時,運用 groupgroup 標籤的標籤的 refref 屬性,引用屬性,引用connectDataconnectData 群組 群組

Page 62: 第  5  章  XML Schema文件

群組標籤 群組標籤 - - 屬性群組屬性群組

對於某一組常用屬性,可以運用對於某一組常用屬性,可以運用 attributeGroupattributeGroup 標籤標籤群組這些屬性。群組這些屬性。

<attributeGroup name=<attributeGroup name= 群組名稱 群組名稱 ref=ref= 參考群組參考群組 >>

屬性群組屬性群組</attributeGroup></attributeGroup>

以下敘述將運用以下敘述將運用 attributeGroupattributeGroup 標籤定義標籤定義 connectDataconnectData屬性群組,包含屬性群組,包含 teltel 、、 FAXFAX 、、 E-MailE-Mail 三種屬性。三種屬性。

Page 63: 第  5  章  XML Schema文件

群組標籤 群組標籤 - - 屬性群組屬性群組

以下敘述將在定義以下敘述將在定義 authorTypeauthorType 型態時,運用型態時,運用attributeGroupattributeGroup 標籤配合標籤配合 refref 屬性,引用屬性,引用 connectDataconnectData屬性群組。屬性群組。

Page 64: 第  5  章  XML Schema文件

應用程式資訊應用程式資訊 對於一些提供給應用程式的文件資訊,可運用對於一些提供給應用程式的文件資訊,可運用 annotationannotation 標籤標標籤標示。示。 annotationannotation 標籤可被標籤可被 XML SchemaXML Schema 的所有標籤包含,做為的所有標籤包含,做為SchemaSchema 文件內各種元素、屬性文件內各種元素、屬性……等標籤,提供應用程式資訊的等標籤,提供應用程式資訊的途徑。途徑。

<xs:annotation><xs:annotation><xs:documentation source=<xs:documentation source= 文件來源 文件來源 xml:lang=xml:lang= 語言語言

>>

說明內容說明內容</xs:documentation></xs:documentation><xs:appinfo source=<xs:appinfo source= 資訊來源資訊來源 >>

應用程式資訊應用程式資訊</xs:appinfo></xs:appinfo>

</xs:annotation></xs:annotation>