什麼是XML Schema ? 簡單來說 就是用來定義XML文件的綱要。
維基解釋(點我)
了解並且如何看懂一份XML Schema
入門首要 ,我很推薦 XML Schema 從看不懂到慢慢懂
上述Blog 很清楚且簡單的解釋了如何去看懂一份 XML Schema 。
今天我們要講的是其他部分,
在跟DTD比較上 ,同樣都是用來定義XML的結構,
因為XML DTDs 在定義XML文件上有許多的限制(如支援型態過少、語法相容性差),
所以衍生出了XML Schema這種東西出來。
我們來看看XML Schema 的特點 :
1) 使用語法 與XML相同
2) 支援多種資料型態,並且可以自定義
3) 可以增加內容限制
<DTDs 文件>
<!ELEMENT book (title, author, character*)>
<!ATTLIST book isbn CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT character (name, friend-of*, since, alias)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT friend-of (#PCDATA)>
<!ELEMENT since (#PCDATA)>
<!ELEMENT alias (#PCDATA)>
-------------------------------------------------------------------------------------------------------------------
<XML Schema 文件 >
雖然比較DTD上,多了許多,但是在說明一個XML文件上更清楚許多。
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.books.org"
xmlns="http://www.books.org"
elementFormDefault="qualified">
<xsd:element name="BookStore">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Book" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Book">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Title" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Author" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Date" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="ISBN" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Publisher" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Title" type="xsd:string"/>
<xsd:element name="Author" type="xsd:string"/>
<xsd:element name="Date" type="xsd:string"/>
<xsd:element name="ISBN" type="xsd:string"/>
<xsd:element name="Publisher" type="xsd:string"/>
</xsd:schema>
然而在上述文件中,用的設計方式
Russian Doll => 如同寫程式巢狀迴圈一樣的寫法,由最外層的Root 元素逐漸向內
曾宣告,一層往內包一層。
Flat Catalog => 宣告簡單的元素、屬性,宣告Root 元素,並且使用ref 屬性來往下層
子元素去定義。
我們來看看XML Schema 的限制,
<element ref="Title" minOccurs="1" maxOccurs="1"/>
其實等價於
<element ref="Title"/>
[資料型態的限制、設定]
如果再設定一個Value 上,欲加上一些限制,可以舉例以下的方法來實作。
restriction
<xs:restriction base="xs:string">
pattern
<xs:pattern value="[0-9]{10}"/>
maxLength
<xs:maxLength value="32"/>
union : 由兩個以上的資料型態聯集而成
list : 用空白去分隔多個符合指定型態的Value
<Reference>
“XML Schema Tutorial”, by Roger L. Costello, September 2001
“Using W3C XML Schema”, by Eric van derVlist, October 2001,
沒有留言:
張貼留言