XML Schema 是基於 XML 的 DTD 替代者。
XML Schema 可描述 XML 文件的結構。
XML Schema 語言也可作為 XSD(XML Schema Definition)來引用。
在繼續學習之前,您需要對以下的知識有基本的了解:
HTML / XHTML
XML 以及XML 命名空間
對DTD 的基本了解
如果您希望首先學習這些項目,請在首頁 訪問這些教程。
XML Schema 的作用是定義 XML 文件的合法建置模組,類似 DTD。
#定義可出現在文件中的元素
定義可出現在文件中的屬性
#定義哪個元素是子元素
定義子元素的順序
#定義子元素的數目
定義元素是否為空,或者是否可包含文字
#定義元素和屬性的資料類型
#定義元素和屬性的預設值以及固定值
#XML Schema 是DTD 的繼任者
我們認為XML Schema 很快就會在大部分網路應用程式中取代DTD。
理由如下:
#XML Schema 可針對未來的需求擴充
XML Schema 更完善,功能更強大
XML Schema 基於XML 編寫
#XML Schema 支援資料型別
#XML Schema 支援命名空間
為什麼要使用XML Schema?
#XML Schema 比 DTD 更強大。
XML Schema 最重要的能力之一就是對資料類型的支援。
#可更容易描述允許的文件內容
可更容易驗證資料的正確性
#可更容易與來自資料庫的數據一併工作
可更容易定義資料約束(data facets)
可更容易定義資料模型(或稱為資料格式)
#可更容易在不同的資料型別間轉換資料
#編者註:資料約束,或稱為facets,是XML Schema 原型中的一個術語,中文可譯為“面”,用來約束資料類型的容許值。
#另一個關於XML Schema 的重要功能是,它們由XML 編寫。
都不必學習新的語言
可使用XML 編輯器來編輯Schema 檔案
#可使用XML 解析器來解析Schema 檔案
可透過XML DOM 來處理Schema
可透過XSLT 來轉換Schema
當資料從傳送者被傳送到接受方時,其要點是雙方應有關於內容的相同的「期望值」。
透過 XML Schema,傳送者可以用一種接受方能夠明白的方式來描述資料。
一種數據,如 "03-11-2004",在某些國家被解釋為11月3日,而在另一些國家為當作3月11日。
但是一個帶有資料類型的XML 元素,例如:
#XML Schema 是可擴充的,因為它們由XML 編寫。
#在其他Schema 中重複使用您的Schema
建立由標準型別衍生而來的您自己的資料型別
##在相同的文檔中引用多重的Schema
我們把符合XML 語法的文檔稱為形式良好的XML 文檔,例如:
它必須以XML 聲明開頭
它必須擁有唯一的根元素
#開始標籤必須與結束標籤相符
元素對大小寫敏感
#所有的元素都必須關閉
#所有的元素都必須正確地嵌套
#必須對特殊字元使用實體
#即使文件的形式良好,仍然不能保證它們不會包含錯誤,而這些錯誤可能會產生嚴重的後果。
請考慮以下的情況:您訂購的了 5 打雷射印表機,而不是 5 台。透過 XML Schema,大部分這樣的錯誤會被您的驗證軟體捕捉到。
如何使用XML Schema
##
XML 文件可對DTD 或XML Schema 進行引用。
一個簡單的XML 文件:<?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
##下面這個範例是名為"note.dtd" 的DTD 文件,它對上面那個XML 文檔的元素進行了定義:
<!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
第 2-5 行定義了 to, from, heading, body 元素的型別是 "#PCDATA"。
XML Schema
#下面這個範例是一個名為"note.xsd"的XML Schema 文件,它定義了上面那個XML 文件的元素:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
DTD 的引用
#此檔案包含DTD 的引用:
<?xml version="1.0"?><!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"><note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
XML Schema 的參考
#此檔案包含XML Schema 的參考:
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
#以上是瘋狂XML學習筆記(7)-------- ---XML Schema的內容,更多相關內容請關注PHP中文網(www.php.cn)!