天天看點

XML系列:(2)XML限制

1、什麼是XML限制

在XML技術中,可以編寫一個文檔來限制一個XML文檔的書寫規範,這稱之為XML限制。

2、XML文法和XML限制的差別

XML文法和XML限制的差別

作用

制定者

XML文法

規範XML檔案的基本編寫規則

由w3c組織制定的

XML限制

規範XML檔案資料内容格式的編寫規則

由開發者自行定義

3、常用的XML限制技術

DTD限制:文法相對簡單,功能也相對簡單。學習成本也低。

Schema限制:文法相對複雜,功能也相對強大。學習成本相對高!!!(名稱空間)

4、XML限制DTD

DTD(Document Type Definition):文檔類型定義

三種方式:内部DTD、引用本地DTD和引用公共DTD

文法:

執行個體:

檔案note.dtd

檔案note.xml

元素聲明使用下面的文法:

或者

類别:

元素的類别

類型

類型值

空标簽

EMPTY

表示元素一定是空元素

普通字元串

(#PCDATA)

表示元素的内容一定是普通字元串(不能含有子标簽)

任何内容

ANY

表示元素的内容可以是任意内容(包括子标簽)

(元素内容)

順序問題:<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>  按順序出現子标簽

次數問題:

元素出現的次數

标簽

含義

文法

示例

(空)

必須且隻出現1次

<!ELEMENT 元素名稱 (子元素名稱)>

<!ELEMENT note (message)>

+

至少出現1次

<!ELEMENT 元素名稱 (子元素名稱+)>

<!ELEMENT note (message+)>

*

0或n次

<!ELEMENT 元素名稱 (子元素名稱*)>

<!ELEMENT note (message*)>

?

0 或1次

<!ELEMENT 元素名稱 (子元素名稱?)>

<!ELEMENT note (message?)>

預設值:

#REQUIRED 屬性值是必需的

#IMPLIED   屬性不是必需的

#FIXED value 屬性不是必須的,但屬性值是固定的

屬性類型:控制屬性值的

CDATA :表示普通字元串

(en1|en2|..): 表示一定是任選其中的一個值,枚舉值

ID:表示在一個xml文檔中該屬性值必須唯一。值不能以數字開頭

實體是用于定義引用普通文本或特殊字元的快捷方式的變量。

在DTD定義中,通過定義一個實體,在

XML檔案中就可以引用這個實體了。

展示:

XML系列:(2)XML限制

注釋: 一個實體由三部分構成: 一個和号 (&), 一個實體名稱, 以及一個分号 (;)。

5、Schema

XML Schema 是基于 XML 的 DTD 替代者。

XML Schema 描述 XML 文檔的結構。

XML Schema 語言也稱作 XML Schema 定義(XML Schema Definition,XSD)。

XML Schema符合XML文法結構,本身就是XML文檔

DTD文檔的結構是平鋪性,如果定義複雜的XML文檔,很難把握各元素之間的嵌套關系,

Schema相對文檔結構較強

XML Schema比DTD支援更多的資料類型,并支援使用者自定義資料類型

XML Schema定義限制的能力更強大

XML Schema 對命名空間進行支援

Schema本身就是一個XML文檔,但擴充名為.xsd。

一個Schema文檔通常稱之為限制文檔,遵循這個限制書寫的XML檔案稱之為執行個體文檔。

和XML檔案一樣,一個Schema文檔必須有一個根節點,并且這個根節點的名稱必須為schema。

編寫一個Schema文檔後,通常需要把這個檔案中聲明元素綁定到一個URI上,

在XML Schema技術中有一個專業術語來描述這個過程,即把XML Schema文檔聲明的元素綁定到一個名稱空間上,

以後XML檔案就可能通過這個URI(即名稱空間)來告訴解析引擎,XML文檔中編寫的元素來自哪裡,被誰限制。

books.xsd(XML Schema檔案)

books.xml(XML執行個體檔案)

booksWithDefaultNameSpace.xml(XML執行個體檔案)