前幾篇部落格討論了xml及dtd的用法,通過討論了解到xml是一種元標記語言,通過它可以定義新的標記語言。另外,文件定義模型為xml文件提供了規範,dtd的引入雖然解決了xml文件的規範化問題,但它檔案格式型別和xml檔案格式型別不一致,同時dtd提供的資料型別有限有時候無法滿足行業的需求,所以引入了schema。schema模式可以確定xml文件的元素和屬性的結構、元素的順序、元素和屬性的資料值,根據範圍、列舉以及樣式匹配等。
xml schema語言也被稱為xml schema definition (xsd),它的作用是定義乙份xml文件的合法元件群(xml文件的結構),就像dtd的作用一樣。 xml schema以xml語言作為基礎,也可以說xml schema自身就是xml的一種應用。
xml schema和dtd的作用一樣,都是用來定義乙個xml文件的結構的模式,那麼為什麼有了dtd還要有xml schema呢?因為,xml schema比dtd作用更加強大。
xml schema 比 dtd的優越性:
模式是可擴充套件的兩者相同,都是定義了乙個xml文件的結構的模式。模式比 dtd 功能更豐富且更有用
模式是用 xml 編寫的
模式支援資料型別
模式支援命名空間
不需要在學習其他的語言
可以直接使用xml編輯器來編寫xml schema
可以直接使用xml解析器來解析xml schema
可以使用xml dom來靈活的操作xml schema
可以使用xslt技術來轉換xml schema
兩者作用相同,但是語法上有些區別。schema是dtd的擴充套件,同樣支援元素和屬性的定義,並且定義的語法相似,但schema可以給元素和屬性新增相應的資料型別,同時還引入了全域性和區域性元素宣告的語法,另外根據元素和屬性的資料內容引入了簡單型別和複雜型別。
所謂的簡單型別(******type)和複雜型別(complextype),它們本身並不是具體的資料型別,它們只是對節點或者自定義型別的型別作乙個抽象的說明。
也就是說schema的引入使得模式的宣告更加類似於我們使用的程式語言。
清單1:user.xml文件結構
<?xml version="1.0"?>
《使用者列表》
《使用者》
《使用者名稱》xx
<?xml version='1.0' encoding='utf-8'?>
清單3:使用區域性形式定義schema,user.xsd
<?xml version='1.0' encoding='utf-8'?>
清單2和清單3的都定義了user.xsd,它們的作用是相同的,都是為了驗證xml文件的合法性,但定義的方法不同,清單2是使用全域性元件的形式定義,而清單3使用的區域性形式定義,具體的區別請看下文。
上文中我們分別從作用和用法上對schema和dtd進行了對比分析,schema和dtd最大的區別在於schema引入了資料型別,其它的如元素和屬性的宣告等類似於dtd,在下面討論時就不再詳述。
schema基本內容導圖:
當乙個模式檔案建立好以後,可以用它來驗證某乙個xml文件的有效性,也就是說檢驗某個xml文件是否遵循了模式檔案的定義。 那麼,xml文件怎麼來引用乙個模式文件呢?
schema模型的引用更類似於前面所說的命名空間的應用方法,具體例項如下:
<?xml version='1.0' encoding='utf-8'?>
《使用者列表 xmlns:xsi= xsi:nonamespaceschemalocation='user.xsd'>
《使用者》
《使用者名稱》我是誰
(1)按照內容的不同分為簡單和複雜元素,分別使用******type和complextype標示。
簡單元素:元素中內容只能是文字,不包含其它的元素和屬性。
<?xml version='1.0' encoding='utf-8'?>
複雜元素:元素中包含其它的元素和屬性。它有四種型別,分別是空元素、只包含其他元素、只包含正文、包含正文又包含其他元素。
<?xml version='1.0' encoding='utf-8'?>
(2)按照定義位置可分為區域性和全域性元素。
全域性元素:元素的父元素必須是;
區域性元素:區域性元素宣告只能出現在複雜型別(元素)定義內部。即元素的父元素只能是、或元素。
<?xml version='1.0' encoding='utf-8'?>
人生三部曲
人生三部曲 童年沙丁魚罐頭似的公共汽車在曬的發燙的柏油路上緩慢地爬著。我 瘦瘦小小的個子在擁擠的人群中喘不過氣來。還要多久呀?人們煩躁而沉悶的氣氛充斥著整個車廂。忽然,我看見一位打扮入時的西裝人士,正悄悄地把手伸入一位老人的口袋。我第一反應就是有小偷!於是大聲脫口而出,一車人都回頭驚悸地看著我,西裝...
XML三部曲之二 DTD
dtd document type definition 定義了 xml檔案的結構,為 xml檔案提供語法與規則。內容既可以在 xml檔案中,也可以在 xml檔案外。可以定義自己的 dtd.dtd 對於xml 是可選的內容。為了正確的交換資料,xml檔案需要確定的結構。劉偉 男乙個標籤只能包含乙個和...
報表三部曲之連線
我們了解和設計了報表之後,剩下的就要實現vb與報表的資料互連。首先要先新增相應的部件。ctrl t 部件 勾選grid report。1.在專案中加入對grid report 的引用 之後出現 2,在窗體中設計部件大小等等屬性。其次,是 1,例項化報表 dim withevents report a...