Schema

schema是一種用於定義和描述XML文檔結構與內容的模式語言,Schema的出現逐步取代了DTD,也很快被接受。

模式文檔:就是一個schema文檔,但它的擴展名通常爲 .xsd。

實例文檔:遵循schema文檔寫的xml文件

Schema的創建

一個有效的Schema文件的結構如此下:

<?xml version="1.0"encoding="UTF-8"?>

<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Schema"
xmlns:tns="http://www.example.org/Schema"elementFormDefault="qualified">
<!--這裏編寫內容-->
< /xs:schema>

Schema文件的聲明部分。

元素“xs:schema”是整個Schema文件的根元素。

“xmlns”、“elementFormDefault”和“attributeFormDefault”都是Schema文件的屬性,對整個Schema文件進行描述。

文件屬性

xmlns:xmlns是xhtml namespace的縮寫,稱爲“命名空間” xmlns屬性的值是一個URI或URL地址 xmlns屬性不可缺少。

targetNamespace:該屬性的值是在xmlns已經定義好的命名空間中選擇。該屬性可有可無。

elementFormDefault :用於指示子元素是否放到命名空間中,有“qualified”和“unqualified”兩種取值。

attributeFormDefault :用於指示是否把某個子元素的屬性放到命名空間中,有“qualified”和“unqualified”兩種取值。

類型元素

簡單的類型元素主要有:simpleType、element、attribute、enumeration、pattern、union、list 7種元素類型。

複雜的類型元素主要有: sequence、complexType、choice、simpleContent、extension、restriction、group、attributeGroup 8種類型元素。

名稱空間

在Schema中,每個約束模式文檔都可以被賦以一個唯一的名稱空間。名稱空間用一個唯一的URI來表示。在XML文件中書寫標籤時,可以通過名稱空間聲明(xmlns),來聲明當前編寫的標籤來自哪個Schema約束文檔。

舉一個簡單的例子:

<itcast:書架xmlns:itcast="http://www.itcast.cn">

<itcast:書>........<itcast:/書>

</itcast:書架>

說明:此處使用itcast來聲明指向名稱。

使用名稱空間引入Schema

爲了在一個XML文檔中聲明遵循的Schema文件的具體位置,通常需要在XML文檔中的根節點中使用schemaLocation屬性來指定,

例如:

<itcast:書架 xmlns:itcast=http://www.itcast.cn

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation="http://www.itcast.cn.book.xsd'>

schemaLocation此屬性有兩個值。第一個值是需要使用的命名空間。第二個值是供命名空間使用的XMLschema的位置,兩者之間用空格分隔。

itcast : 解釋書架來自itcast,那麼itcast來自哪裏呢

itcast來自於: xmlns:itcast=”http://www.itcast.cn

Schema的優點:

1、Schema符合XML語法結構。

2、DOM、SAX、等XML API很容易解析出XML Schema文檔中的內容。

3、XML Schema對名稱空間支持得非常好。

4、XNL Schema定義約束能力非常強大,可以對XML實例文檔做出細緻的語義限制。

5、Schema比XML DTD支持更多的數據類型,並支持用戶自定義新的數據類型。

6、可針對未來的需求進行擴展,與DTD相比,更加完善,功能更強大

編寫一個XML Schema約束文檔後,通常需要把這個文件中聲明的元素綁定到一個URL地址上,在 Schema技術中有一個專業術語來描述這個過程,即把XML Schema 綁定到一個名稱空間上,XML文件通過URI來解析引擎,xml文檔中編寫的元素來自哪裏,被誰約束。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章