一個簡單的XML Schema的例子

來源:互聯網
上載者:User
xml 我們可以看到,DTD的文法相當複雜,並且它不符合XML檔案的標準,自成一個體系。也就是說DTD文檔本身並不是一個良好形式的XML文檔,上面的關於DTD的介紹也僅僅是作了一個簡介,目的是協助大家能讀懂DTD檔案以及在必要時建立簡單的DTD檔案,因為現在很多的XML應用是建立在DTD之上的。

另外一個代替DTD的就是W3C定義的Schema,Schema從字面意義上來說,可以翻譯成模式、大綱、計劃、規劃等等。它的基本意思就是說為XML文檔制定一種模式。

Schema相對於DTD的明顯好處是XML Schema文檔本身也是XML文檔,而不是像DTD一樣使用自成一體的文法。這就方便了使用者和開發人員,因為可以使用相同的工具來處理XML Schema和其他XML資訊,而不必專門為Schema使用特殊工具。Schema簡單易懂,懂得XML文法、規則的人都可以立刻理解它。Schema的概念提出已久,但W3C的標準最近才出來,相應的應用支援尚未完善,但採用Schema已成為XML發展的一個趨勢。


首先我們還是從最簡單的例子著手來學習Schema的文法結構:

比如一個簡單的XML文檔如下:

<書本>
<名稱>天涯明月刀
<作者>古龍
  

如果用DTD的形式來定義該XML文檔結構的話,可以如下所示:


<!ELEMENT 書本 (名稱, 作者)>
<!ELEMENT 名稱 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>

那麼用Schema形式如何定義呢?見下面的代碼:

<element name='書本' type='書本類型'/>
<complexType name='書本類型'>
<element name='名稱' type='string'/>
<element name='作者' type='string'/>
</complexType>

可以注意的一點是,在Schema中,也是通過對元素的定義和元素關係的定義來實現對整個文檔性質和內容的定義。同時需要注意的是,在Schema中,元素是通過它的名字和內容模型來確定,名稱就是該元素的名字,這個大家都可以理解,而內容模型實際上就是表示元素的類型。就象在C++中,我們可以隨便定義一個變數,但是必須定義變數的類型,變數的類型就可能有多種形式,它可以是一個簡單的變數(如C++內部指定的類型,bool,int,double,char等等),也可以是很複雜的類型(比如是一個struct或者是class),在Schema中也是一樣,類型(type)可以分為兩種形式,一種是非常簡單的類型,被稱為simple,一種是複雜的類型,被稱為complex。簡單類型不能包含元素和屬性(注意在Schema中和DTD中一樣,都有元素屬性的說法,大道相同)。而複雜類型不僅可以包含屬性,而且可以在其中嵌套其他的元素,或者可以和其他元素中的屬性相關聯。



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。