Xml schema
This presentation is the property of its rightful owner.
Sponsored Links
1 / 46

第四章 XML Schema PowerPoint PPT Presentation


  • 234 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

第四章 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.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 屬性宣告


Xml schema

簡介

  • 現今 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擁有更大的擴充性。


Xml schema

結構

  • XML Schema 和 DTD 定義了一篇 XML 文章內可以使用的元素和屬性。XML Schema 提供比 DTD 更嚴格的定義。


Xml schema

結構

  • 常用的Schema元素如下表所示:


Xml schema2

XML Schema 資料型態

  • XML Schema 支援多達四十種以上的資料型態,而且允許使用者自定資料型態,這些資料型態是使用在XML元素和屬性內容。


Xml schema

內建資料型態

  • XML Schema支援內建資料型態,能夠直接用來定義XML元素或屬性的內容,如下所示:

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

<xsd:element name=“code” type=“xsd:string”/>

<xsd:element name=“price” type=“xsd:decimal”/>


Xml schema

基本資料型態

  • XML Schema 內建的資料型態都是由一些基本資料型態所產生,如下表所示:


Xml schema

自訂資料型態

  • 當需要替XML元素或屬性自訂資料型態時,我們需要使用simpleType元素定義所需的資料型態,語法如下所示:

<simpleType name=“name” base=“datatypes”>

<facets_element value=“value”/>

…………

</simpleType>


Xml schema

自訂資料型態(續)

  • 前頁simpleType元素的屬性說明如下:

    • Name屬性:使用者自訂資料型態的名稱。

    • Base屬性:基底的資料型態,例如:string , boolean , float , double , decimal…等。


Xml schema

自訂資料型態(續)

  • 在simpleType元素的子元素facets_element就是在描述資料型態的細節,如下所示


Xml schema

自訂資料型態(續)

  • 定義數字範圍:

    • 使用simpleType元素定義一個範圍的數字資料型態,例如訂購的數量最少為1,最大為100,如下所示:

    • 上述指令轉換成數學運算示可表示成:

      0<=OrderQuantity<=100

<simpleType name=“OrderQuantity” base=“integr”>

<minInclusive value=“1”/>

<maxInclusive value=“100”/>

</simpleType>


Xml schema

自訂資料型態(續)

  • 定義列舉的元素內容

    • 如果元素內容為列與清單中的其中之一,如:色彩值紅、白、黑、和藍,如下所示。

<simpleType name=“color” base=“string”>

<enumeration value=“red”/>

<enumeration value=“white”/>

<enumeration value=“blue”/>

<enumeration value=“black”/>

</simpleType>


Xml schema

自訂資料型態(續)

  • 正規語法

    • 當我們需要定義一個字串的模型如

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

<simpleType name=“PhoneNumver” base=“string”>

<length value=“11”/>

<pattern value=“\d{2}-\d{8}”/>

</simpleType>


Xml schema

自訂資料型態(續)

  • 上頁的\d代表數字,前二位,後八位,中間有個“-”符號,一些常用的正規語法如下:


Xml schema

XML元素宣告

  • XML Schema的目的就是在宣告XML文件的元素,目前共有兩種方法進行宣告,第一種是參考其他已經定義好的資料型態,另一種就是使用complexType元素同時定義字元素和資料型態,首先我們先來看看第一種元素宣告,使用的為element元素,基本的語法如下所示:

<element name=“name” type=“type“ minOccurs=“int” maxOccurs=“int”/>


Xml schema

XML元素宣告(續)

  • 上頁的宣告各屬性參數說明如下:

    • name屬性:此為XML元素名稱。

    • type屬性:XML元素內容的資料型態,可為內建資料型態、simpleType和complexType 元素宣告的資料或名稱型態。

    • minOccurs屬性:元素最少出現的次數。

    • maxOccurs屬性:元素最多出現的次數,如為unbounded表示無限次數。


Xml schema

XML元素宣告(續)

  • minOccurs和maxOccurs屬性值和其意義,相對於DTD指令如下表所示:


Xml schema

內建資料型態

  • 如果XML元素內容為內建資料型態,且沒有擁有其他子元素,此時便可直接使用內建資料型態宣告XML元素。

  • 上述element元素宣告一個title的XML元素,此元素為字串string,而且只會出現一次。

<element name=“title” type=“string” minOccurs=“1” maxOccurs=“1”/>


Xml schema

內建資料型態(續)

  • 如果XML擁有固定值,此時可使用fixed屬性指定元素值。

  • 上述XML元素zero的值為0,因為我們使用fixed屬性指定其值。

<element name=“zero” type=“unsignedByte” fixed=“0” minOccurs=“1” maxOccurs=“1”/>


Simpletype

simpleType元素

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

<simpleType name=“ISBNType” base=“string”>

<pattern value=“\d{3}-\d{3}-\d{3}-\d{1}”/>

</simpleType>


Simpletype1

simpleType元素(續)

  • 在定義好所需的資料型態後,我們就可以使用此型態宣告XML元素:

  • 上述元素定義XML的ISBN元素,使用的資料型態就是上頁定義的ISBNType,則所呈現的資料舉例如下:

    ex:957-717-658-5

<element name=“ISBN” type=“ISBNType” minOccurs=“1” maxOccurs=“1”/>


Complextype

complexType元素

  • 如果XML元素擁有子元素,此時我們就需要使用complexType元素的子元素名稱和型態

  • 上述的complexType元素的屬性參數說明如下:

    • name屬性:此為資料型態的名稱。

    • content屬性:說明元素的內容為何,值elementOnly表示在宣告XML元素,值mixed表示宣告元素和屬性,值empty表示此為空元素。

<complexType name=“name” content=“elementOnly”>

<element …/>

</complexType>


Complextype1

complexType元素(續)

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

<complexType name=“bookType” content=“elementOnly”>

<element name=“code” type=“string”/>

<element name=“title” type=“string”/>

<element name=“authorlist” type=“authorlsitType”/>

<element name=“price” type=“decimal”/>

</complexType>


Complextype2

complexType元素(續)

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

<element name=“book” type=“bookType” minOccurs=“1” maxOccurs=“unbounded”/>


Complextype3

complexType元素(續)

  • complexType元素的語法除了屬性外,其本身還擁有一些指令的子元素,如下:


Complextype4

complexType元素(續)

  • 我們也可以用另一種方式,直接在element元素使用complexType子元素定義XML元素的子元素和屬性,如下:

<element name=“name”>

<complexType>

…..

</complexType>

</element>


Sequence

sequence順序元素

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

<complexType name=“bookType” content=“elementOnly”>

<sequence>

<element name=“code” type=“string”/>

<element name=“title” type=“string”/>

<element name=“authorlist” type=“authorlsitType”/>

<element name=“price” type=“decimal”/>

</sequence>

</complexType>


Choice

choice選項元素

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

<choice>

<element name=“a” type=“string minOccurs=“1” maxOccurs=“1”/>

<element name=“b” type=“string” minOccurs=“1” maxOccurs=“1”/>

<element name=“c” type=“stringl” minOccurs=“1” maxOccurs=“1”/>

</choice>

  • 上述指令為三選一,只能為a,b,c元素其中之一。


Choice1

choice選項元素(續)

  • 如果有需要重覆出現,choice需要指定屬性。如下:

<choice minOccurs=“0” maxOccurs=“unbounded”>

…………

</choice>

  • 上述元素屬性minOccurs和maxOccurs指出choice元素下的XML元素允許出現無限次,也可以為零次。


Empty

empty空元素

  • 上述元素image並沒有內容,只擁有屬性file,此時合法的元素如下:

    <image file=“f1234.gif”/>

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

<element name=“image” minOccurs=“1” maxOccurs=“1”>

<complexType content=“empty”>

<attribute name=“file” type=“string” use=“required”/>

</complexType>

</element>


Group

group群組元素

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

<group name=“bookData”>

<sequence>

<element name=“code” type=“string”/>

<element name=“title” type=“string”/>

<element name=“authorlist” type=“authorlsitType”/>

<element name=“price” type=“decimal”/>

</sequence>

</group>


Group1

group群組元素(續)

  • 上述的group元素將code,title,authorlist和price建立成一個稱為bookData的群組,在建立好群組後,我們可以在宣告時直接使用此群組,下頁說明如何使用。


Group2

group群組元素(續)

  • 上述的group元素使用ref屬性指定使用的群組,並可以指定出現的次數,不過請注意group元素需在真的參考前宣告。

<complexType name=“bookType” content=“elementOnly”>

<sequence>

<group ref=“bookData” minOccurs=“1” maxOccurs=“1”/>

<element name=“image” minOccurs=“1” maxOccurs=“1”>

<complexType content=“empty”>

<attribute name=“file” type=“string” use=“required”/>

</complexType>

</element>

</sequence>

</complexType>


Xml schema3

XML Schema屬性宣告

  • 使用XML Schema宣告XML元素後,接下來就是宣告XML元素的屬性,基本上屬性的宣告方式有兩種,一種使用內建資料型態或simpleType元素的自訂資料型態,另一種是在宣告同時,使用simpleType元素宣告所需的資料型態。


Xml schema

XML元素屬性

  • 如果XML元素擁有屬性,我們就需要在宣告complexType元素或element元素時,同時宣告元素的屬性,使用的就是attribute元素,其語法如下:

<attribute name=“name” type=“simple_type” use=“how_its_used” value=“value”/>


Xml schema

XML元素屬性(續)

  • 上頁attribute元素可以宣告XML元素的屬性,一個attribute元去宣告一個屬性,其屬性參數的說明如下:

    • Name屬性:XML元素的屬性名稱。

    • Type屬性:屬性的資料型態,可以使用內建或simpleType元素定義的資料型態。

    • Use/value屬性:這兩個屬性擁有關連性,use屬性為XML屬之的使用方式,不同的使用方式擁有不同的value屬性值,詳細的說明,如下表所示。


Xml schema

XML元素屬性(續)


Complextype5

complexType元素的屬性

  • 當使用attribute元素宣告XML屬性,通常都屬於complexType元素的子元素,如果complexType元素同時宣告有元素和屬性,此時的content屬性值為mixed。

<complexType name=“bookType” content=“mixed”>

<sequence>

….

</sequence>

<attribute name=“sales” use=“required” type=“boolean”/>

</complexType>


Complextype6

complexType元素的屬性(續)

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

<element name=“book” type=“bookType” minOccurs=“1” maxOccurs=“unbounded”/>

  • 上述的element元素宣告一個XML元素book,這個元素擁有屬性sales。


Element

Element元素的屬性

  • 同樣的attribute也可以屬於element元素的子元素,例如XML元素book擁有屬性code,如下所示:

<element name=“book” type=“string”>

<attribute name=“code” type=“string” use=“required”/>

</element>

  • 上述指示使用element元素宣告一個XML元素book後,同時也使用attribute宣告此元素的屬性code。


Xml schema

宣告XML屬性同時宣告資料型態

  • 如果屬性值不是使用內建的資料型態,此時我們可以在宣告屬性時,同時使用simpleType元素宣告屬性的資料型態。

<attribute name=“name” use=“how_its_used” value=“value”>

<simpleType base=“simpleType”>

………….

</simpleType>

</attribute>


Attributegroup

attributeGroup元素

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

<attributeGroup name=“bookAttr”>

<element name=“code” type=“string” use=“required”/>

<element name=“title” type=“string” use=“required” />

<element name=“author” type=“string” use=“required” />

<element name=“price” type=“decimal” use=“required” />

</attributeGroup>


Attributegroup1

attributeGroup元素(續)

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

<element name=“image” minOccurs=“1” maxOccurs=“1”>

<complexType content=“empty”>

<attributeGropu ref=“bookAttr”/>

</complexType>

</element>


Attributegroup2

attributeGroup元素(續)

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

<book code=“F8931” title=“XML Schema探討” author=“JACK” price=“500”/>


  • Login