xml schema
Download
Skip this Video
Download Presentation
第四章 XML Schema

Loading in 2 Seconds...

play fullscreen
1 / 46

第四章 XML Schema - PowerPoint PPT Presentation


  • 295 Views
  • Uploaded on

第四章 XML Schema. Schema 與 DTD 的比較 XML Schema 的特性 XML 資料型態 XML Schema 屬性宣告. 簡介. 現今 XML 最主要的功能是在程式、系統或是公司、組織之間交換資料,所以資料的正確性是相當重要的。資料的結構與格式的正確是基礎要求,這可以透過 XML Schema 或是 Document Type Definition (DTD) 來定義。 XML Schema 提供比 DTD 更多的彈性,且與 XML 語法相容,所以是較好的選擇。. Schema 與 DTD 的比較.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第四章 XML Schema' - varsha


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
xml schema

第四章 XML Schema

Schema 與DTD的比較

XML Schema 的特性

XML 資料型態

XML Schema 屬性宣告

slide2
簡介
  • 現今 XML 最主要的功能是在程式、系統或是公司、組織之間交換資料,所以資料的正確性是相當重要的。資料的結構與格式的正確是基礎要求,這可以透過 XML Schema 或是 Document Type Definition (DTD) 來定義。
  • XML Schema 提供比 DTD 更多的彈性,且與 XML 語法相容,所以是較好的選擇。
schema dtd
Schema 與 DTD 的比較
  • DTD 的缺點
    • DTD 採用與 XML 不同的語法
    • 無法支援名稱空間(Namespace)
    • 僅能支援有限的資料型態
    • 建立於字串取代的延伸機制(參數實體)
xml schema1
XML Schema的特性
  • XML Schema 本身就是一份良好格式的XML文件。
  • XML Schema 支援更多XML元素的「資料型態」,可以定義各種XML元素的資料型態。
  • XML Schema支援名稱空間,比起DTD擁有更大的擴充性。
slide5
結構
  • XML Schema 和 DTD 定義了一篇 XML 文章內可以使用的元素和屬性。XML Schema 提供比 DTD 更嚴格的定義。
slide6
結構
  • 常用的Schema元素如下表所示:
xml schema2
XML Schema 資料型態
  • XML Schema 支援多達四十種以上的資料型態,而且允許使用者自定資料型態,這些資料型態是使用在XML元素和屬性內容。
slide8
內建資料型態
  • XML Schema支援內建資料型態,能夠直接用來定義XML元素或屬性的內容,如下所示:

上述指令的type屬性使用的就屬於內建資料型態string和decimal,用來定義XML元素code和price內容的資料型態。

slide9
基本資料型態
  • XML Schema 內建的資料型態都是由一些基本資料型態所產生,如下表所示:
slide10
自訂資料型態
  • 當需要替XML元素或屬性自訂資料型態時,我們需要使用simpleType元素定義所需的資料型態,語法如下所示:

…………

slide11
自訂資料型態(續)
  • 前頁simpleType元素的屬性說明如下:
    • Name屬性:使用者自訂資料型態的名稱。
    • Base屬性:基底的資料型態,例如:string , boolean , float , double , decimal…等。
slide12
自訂資料型態(續)
  • 在simpleType元素的子元素facets_element就是在描述資料型態的細節,如下所示
slide13
自訂資料型態(續)
  • 定義數字範圍:
    • 使用simpleType元素定義一個範圍的數字資料型態,例如訂購的數量最少為1,最大為100,如下所示:
    • 上述指令轉換成數學運算示可表示成:

0<=OrderQuantity<=100

slide14
自訂資料型態(續)
  • 定義列舉的元素內容
    • 如果元素內容為列與清單中的其中之一,如:色彩值紅、白、黑、和藍,如下所示。

slide15
自訂資料型態(續)
  • 正規語法
    • 當我們需要定義一個字串的模型如

02-22222222時,可以用以下的指令:

slide16
自訂資料型態(續)
  • 上頁的\d代表數字,前二位,後八位,中間有個“-”符號,一些常用的正規語法如下:
slide17
XML元素宣告
  • XML Schema的目的就是在宣告XML文件的元素,目前共有兩種方法進行宣告,第一種是參考其他已經定義好的資料型態,另一種就是使用complexType元素同時定義字元素和資料型態,首先我們先來看看第一種元素宣告,使用的為element元素,基本的語法如下所示:

slide18
XML元素宣告(續)
  • 上頁的宣告各屬性參數說明如下:
    • name屬性:此為XML元素名稱。
    • type屬性:XML元素內容的資料型態,可為內建資料型態、simpleType和complexType 元素宣告的資料或名稱型態。
    • minOccurs屬性:元素最少出現的次數。
    • maxOccurs屬性:元素最多出現的次數,如為unbounded表示無限次數。
slide19
XML元素宣告(續)
  • minOccurs和maxOccurs屬性值和其意義,相對於DTD指令如下表所示:
slide20
內建資料型態
  • 如果XML元素內容為內建資料型態,且沒有擁有其他子元素,此時便可直接使用內建資料型態宣告XML元素。
  • 上述element元素宣告一個title的XML元素,此元素為字串string,而且只會出現一次。

slide21
內建資料型態(續)
  • 如果XML擁有固定值,此時可使用fixed屬性指定元素值。
  • 上述XML元素zero的值為0,因為我們使用fixed屬性指定其值。

simpletype
simpleType元素
  • 對於比較複雜的資料型態,例如:ISBN圖書書號,我們可以用simpleType元素定義所需的新資料型態,如下:

simpletype1
simpleType元素(續)
  • 在定義好所需的資料型態後,我們就可以使用此型態宣告XML元素:
  • 上述元素定義XML的ISBN元素,使用的資料型態就是上頁定義的ISBNType,則所呈現的資料舉例如下:

ex:957-717-658-5

complextype
complexType元素
  • 如果XML元素擁有子元素,此時我們就需要使用complexType元素的子元素名稱和型態
  • 上述的complexType元素的屬性參數說明如下:
    • name屬性:此為資料型態的名稱。
    • content屬性:說明元素的內容為何,值elementOnly表示在宣告XML元素,值mixed表示宣告元素和屬性,值empty表示此為空元素。

complextype1
complexType元素(續)
  • 上述的complexType元素定義了bookType的內容,也就是子元素code、title、authorlist和price,其中authorlist也是另一個complexType元素。

complextype2
complexType元素(續)
  • 上述這個元素出現次數最少為1,最多為無限,使用的bookType是上頁所宣告的一個complexType元素所建立的名稱型態,所以book元素擁有子元素code、title、authorlist和price。。

complextype3
complexType元素(續)
  • complexType元素的語法除了屬性外,其本身還擁有一些指令的子元素,如下:
complextype4
complexType元素(續)
  • 我們也可以用另一種方式,直接在element元素使用complexType子元素定義XML元素的子元素和屬性,如下:

…..

sequence
sequence順序元素
  • sequence元素可以宣告XML子元素出現的順序,例如:book元素的子元素依序為code、title、authorlist和price,如下:

choice
choice選項元素
  • 如果XML元素出現的次數允許選擇,也可能重覆出現,也可能不出現,choice可指定那些XML元素為選項元素:

  • 上述指令為三選一,只能為a,b,c元素其中之一。
choice1
choice選項元素(續)
  • 如果有需要重覆出現,choice需要指定屬性。如下:

…………

  • 上述元素屬性minOccurs和maxOccurs指出choice元素下的XML元素允許出現無限次,也可以為零次。
empty
empty空元素
  • 上述元素image並沒有內容,只擁有屬性file,此時合法的元素如下:

  • 如果XML元素為空元素,只需指定complexType元素的content屬性即可

group
group群組元素
  • 對於XML文件一些基本的XML元素,我們可以將它們給合成為一個group元素,例如:code,title,authorlist和price元素。

group1
group群組元素(續)
  • 上述的group元素將code,title,authorlist和price建立成一個稱為bookData的群組,在建立好群組後,我們可以在宣告時直接使用此群組,下頁說明如何使用。
group2
group群組元素(續)
  • 上述的group元素使用ref屬性指定使用的群組,並可以指定出現的次數,不過請注意group元素需在真的參考前宣告。

xml schema3
XML Schema屬性宣告
  • 使用XML Schema宣告XML元素後,接下來就是宣告XML元素的屬性,基本上屬性的宣告方式有兩種,一種使用內建資料型態或simpleType元素的自訂資料型態,另一種是在宣告同時,使用simpleType元素宣告所需的資料型態。
slide37
XML元素屬性
  • 如果XML元素擁有屬性,我們就需要在宣告complexType元素或element元素時,同時宣告元素的屬性,使用的就是attribute元素,其語法如下:

slide38
XML元素屬性(續)
  • 上頁attribute元素可以宣告XML元素的屬性,一個attribute元去宣告一個屬性,其屬性參數的說明如下:
    • Name屬性:XML元素的屬性名稱。
    • Type屬性:屬性的資料型態,可以使用內建或simpleType元素定義的資料型態。
    • Use/value屬性:這兩個屬性擁有關連性,use屬性為XML屬之的使用方式,不同的使用方式擁有不同的value屬性值,詳細的說明,如下表所示。
complextype5
complexType元素的屬性
  • 當使用attribute元素宣告XML屬性,通常都屬於complexType元素的子元素,如果complexType元素同時宣告有元素和屬性,此時的content屬性值為mixed。

….

complextype6
complexType元素的屬性(續)
  • 上頁的attribute元素宣告一個sales屬性required表示為必須的屬性,宣告的屬性屬於此complexType元素的element元素,也就是book元素,如下:

  • 上述的element元素宣告一個XML元素book,這個元素擁有屬性sales。
element
Element元素的屬性
  • 同樣的attribute也可以屬於element元素的子元素,例如XML元素book擁有屬性code,如下所示:

  • 上述指示使用element元素宣告一個XML元素book後,同時也使用attribute宣告此元素的屬性code。
slide43
宣告XML屬性同時宣告資料型態
  • 如果屬性值不是使用內建的資料型態,此時我們可以在宣告屬性時,同時使用simpleType元素宣告屬性的資料型態。

………….

attributegroup
attributeGroup元素
  • 如同宣告XML元素時使用group群組元素,XML屬性一樣也可以使用attributeGroup元素建立群組屬性,例如:將原來圖書資料的XML元素都改為屬性內容,如下

attributegroup1
attributeGroup元素(續)
  • 上頁群組屬性bookAttr宣告code,title, author和price屬性,接著可以在宣告XML元素book時,直接套用群組屬性,如下:

attributegroup2
attributeGroup元素(續)
  • 上頁attributeGroup元素使用ref屬性參考群組屬性bookAttr,也就是說XML元素book將擁有群組屬性的所有屬性,如下:

ad