DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> Schema初學者進階(1)
Schema初學者進階(1)
編輯:XML基礎     

 

摘要:XML Schema 是用來描述和約束XML文檔的一種XML語言,從功能上看,它和早期的DTD是非常類似的,但是它比DTD的更加強大。目前Schema標准在W3C開發進程中是一個候選建議。

我們的第一個Schema

讓我們從這個關於書的簡單XML文檔開始,如果您對XML的語法不是很清楚的話,我建議您先學習XML文檔的寫法,因為這樣會使您比較容易理解下面關於Schema的敘述。

<?xml version="1.0" encoding="utf-8"?>
<book isbn="0836217462">
<title>Being a Dog Is a Full-Time Job</title>
<author>Charles M. Schulz</author>
<character>
<name>Snoopy</name>
<friend-of>Peppermint Patty</friend-of>
<since>1950-10-04</since>
<qualification> extroverted beagle </qualification>
</character>
<character>
<name>Peppermint Patty</name>
<since>1966-08-22</since>
<qualification>bold, brash and tomboyish</qualification>
</character>
</book>

如何寫這個XML文檔的Schema呢?我們可以簡單的依照它的結構來定義它的每個元素。首先我們加入一個xsd:schema元素.

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
從"schema"元素開始我們Schema文檔,在每個Schema文檔中,它只能有一個,它控制著Schema所使用的名域和另外幾個選項,我們知道現在的Schema標准有好幾種,因此它是非常重要的!關於它的細節我們都將在下面的章節裡學到。

對應著XML文檔的"book"標記,我們同樣也定義一個名為"book"的元素(element).因為這個元素有屬性(attributes)和非文本的子元素(non-text children),因此我們認為它是一個復雜類型(complexType)(因為簡單類型,只能有值,而不能有子元素或者屬性)。同時我們還注意到"book"元素下的子元素,都是按照一定的順序排列,因此我們使用順序元素(sequence element)來描述它們。

<xsd:element name="book">
<xsd:complexType>
<xsd:sequence>
順序元素(sequence element)是一個定義子元素排列順序的元素,在下面的章節,我們還將看到兩個其它的類似的元素,選擇(choice)和全選(all)。

接著我們定義"title"和"author",它們都是xsd:string類型的簡單元素,因為他們沒有屬性(attributes)或者子元素,xsd:string是一個已經在名域中預定義了的XML Schema類型中的一個。

<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
接著,我們來處理"character"元素,它也是一個復雜類型。注意它的基數的定義!

<xsd:element name="character" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
同其它Schema定義語言不一樣,W3C XML Schema允許我們定義一個元素的使用基數,我們能指定元素的minOccurs(最小數)和maxOccurs(最大數。這裡我們設置maxOccurs為"unbounded",這意味能有任意多的"character"元素。這兩個屬性的默認值都是一。下面,我們用同樣的方法定義其它的子元素。

<xsd:element name="name" type="xsd:string"/>
<xsd:element name="friend-of" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="since" type="xsd:date"/>
<xsd:element name="qualification" type="xsd:string"/>

下面我們封閉complexType和element等元素:

</xsd:sequence>
</xsd:complexType>
</xsd:element>
這樣"character"元素就完成了。然後我們封閉"book"的sequence元素。

</xsd:sequence>

現在,聲明"book"元素的屬性,我們通常是在最後這麼做。這樣做沒有什麼特別的原因,只不過W3C XML Schema工作組認為在元素後定義屬性感覺更加自然。

&l

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved