第 5 章 XML Schema文件.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

以XML可延伸式標注語言建立文章標誌系統研究- 以蘇軾詩為範圍
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
第三章 XML DTD 設計 何謂DTD DTD基本語法 條件段 使用外部DTD.
第十一章 結構.
簡易C++除錯技巧 長庚大學機械系
9/28號專題報告 Web網頁遊戲 曾建瑋.
經濟部工業局電子化人才培訓課程 清華大學工業工程與工程管理學系 課程名稱:電子商務管理與技術
列舉(enum).
第八章 利用SELECT查詢資料.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Schema 與DTD的比較 XML Schema 的特性 XML 資料型態 XML Schema 屬性宣告
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Visual Basic 物件導向程式設計簡介.
OpenID與WordPress使用說明
XML Scheam 也是用來驗證XML文件的驗證語法.
檔案與磁碟的基本介紹.
OSGi (Open Service Gateway Initiative)
Java 程式設計 講師:FrankLin.
第 4 章 DTD文件的建立.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
|12 結構與列舉型態.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
TB-054A  周天穎 編著 儒林圖書公司 發行.
陣列(Array).
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第 19 章 XML記憶體執行模式.
雲端計算.
HTML – 超連結與圖片 資訊教育.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
挑戰C++程式語言 ──第8章 進一步談字元與字串
GridView.
GridView操作 (II).
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
第 8 章 客戶端網頁的XML.
第 2 章 XML基本語法.
利用 EditorConfig 自訂文字編輯器設定
肆-2情緒宣洩的方法 (使用滑鼠左鍵將字拖曳至正確圖底下)
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
陣列與結構.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
第 4 章 認識 SQL 語言與資料型別.
Dreamweaver 進階網頁製作 B 許天彰.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
第11章 XML Schema Object Model物件模型
1757: Secret Chamber at Mount Rushmore
清單的CSS樣式.
Cloud Training Material- 事件 Sherman Wang
電子郵件簡報.
Test for R Data Processing & Graphics
多國語系 建國科技大學 資管系 饒瑞佶.
變數、常數與資料型態 大綱 變數與常數 變數 資料型別 資料的輸出.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Array(陣列) Anny
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

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

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

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

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

簡介XML Schema - XML Schema文件的基本架構 以下敘述將定義型態為字串的title元素。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

資料型態的宣告 - 自訂簡單資料型別–simpleType <simpleType name=型態名稱> 元素內容 </simpleType>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

資料型態的宣告 - 自訂複雜資料型別–complexType <complexType name=型態名稱 mixed=是否為混合內容> 元素內容 </complexType>

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

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

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

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

資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 混合元素的宣告 欲宣告內容為文字與元素混合的元素型態,必須在宣告型態時,將complexType標籤的mixed屬性設為true。

資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 空元素 宣告型態為空元素的資料型態時,僅需運用complexType空元素。 當然亦可直接將此complexType標籤置於element標籤內。

資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 資料型態的宣告 - 混合內容元素、空元素與未知型態元素的宣告 未知型態元素 若定義包含未知元素型態的資料型態,可運用any標籤。語法如下: <xs:any namespace=名稱空間 processContents=是否處理元素內容 minOccurs=最少個數 maxOccurs=最多個數/>

屬性的定義 - 定義屬性 屬性的宣告語法如下: <xs:attribute name=屬性名稱 type=資料型態 use=使用方式 default=預設值 fixed=固定值 ref=屬性參考/>

屬性的定義 - 定義屬性 巢狀元素 設定巢狀元素的屬性值時,只要在complexType標籤內,運用attribute標籤,定義屬性值即可。 以下敘述將宣告bookType資料型別為巢狀元素型態,並擁有sale屬性,預設值為Y,其型態將運用simpleType標籤與restriction標籤定義,衍生自string型態。

屬性的定義 - 定義屬性 空元素 若在complexType標籤內,刪除元素排列標籤,以及標籤內的元素宣告,便可宣告出擁有屬性的空元素。 以下敘述,則宣告authorType為空元素資料型態,且擁有string型態的name屬性。

屬性的定義 - 定義屬性 文字元素 若是欲定義文字元素擁有屬性時,則必須運用simpleContent標籤,配合extension標籤,宣告屬性的型態。 以下敘述將宣告publisherType型態衍生於string型態,並擁有tel屬性與FAX屬性的文字元素型態。

屬性的定義 - 未知類型的屬性 定義元素擁有未知類型的屬性時,可使用anyAttribute標籤,語法如下: <xs:anyAttribute namespace=名稱空間 processContents=是否處理屬性內容/>

群組標籤 - 元素群組 對於某一組常用元素,可以運用group標籤群組這些元素,方便在Schema文件的其他部份引用,group標籤的使用語法如下: <group name=群組名稱 ref=參考群組 minOccurs=最少發生次數 maxOccurs=最多發生次數> 群組內容 </group>

群組標籤 - 元素群組 對於某一組常用元素,可以運用group標籤群組這些元素,方便在Schema文件的其他部份引用,group標籤的使用語法如下: <group name=群組名稱 ref=參考群組 minOccurs=最少發生次數 maxOccurs=最多發生次數> 群組內容 </group> 以下敘述將定義connectData群組,包含tel、FAX、E-Mail三種元素。

群組標籤 - 元素群組 以下敘述將在運用complexType標籤定義資料型態時,運用group標籤的ref屬性,引用connectData群組

群組標籤 - 屬性群組 對於某一組常用屬性,可以運用attributeGroup標籤群組這些屬性。 <attributeGroup name=群組名稱 ref=參考群組> 屬性群組 </attributeGroup> 以下敘述將運用attributeGroup標籤定義connectData屬性群組,包含tel、FAX、E-Mail三種屬性。

群組標籤 - 屬性群組 以下敘述將在定義authorType型態時,運用attributeGroup標籤配合ref屬性,引用connectData屬性群組。

應用程式資訊 對於一些提供給應用程式的文件資訊,可運用annotation標籤標示。annotation標籤可被XML Schema的所有標籤包含,做為Schema文件內各種元素、屬性…等標籤,提供應用程式資訊的途徑。 <xs:annotation> <xs:documentation source=文件來源 xml:lang=語言> 說明內容 </xs:documentation> <xs:appinfo source=資訊來源> 應用程式資訊 </xs:appinfo> </xs:annotation>