XML 約束模式

2021-06-28 11:32:28 字數 2528 閱讀 6963

xml 的約束模式

xml 文件僅是格式良好還不夠,其中的內容還必須滿足某些條件的約束限制。在這些條件下,需要定義一套規則來對 xml 文件中的內容作出限制,這套定義的規則就是 xml 文件

的約束模式。

約束模式定義了 xml 文件中允許出現的元素名,元素中的屬性,內容的型別,以及元素之間的巢狀關係和出現順序

1 xml 的約束模式語言

1)xml dtd  2)xml schema滿足正確的語法並不代表xml是有效的,只能說是正確的。如果使xml有效必須依賴於dtd或是schema

1.1 xml dtd(document type definition)

a)用來描述文件的結構:

1) 元素(element)的定義規則

2)元素與元素之間的關係

3)屬性(attlist)的定義規則

4)可使用的實體(entity)或是可使用的符號(notation)規則

b)xml與dtd之間的關係:

1)類與物件之間的關係

2)資料庫表與資料記錄的關係

3)有了dtd每個xml檔案可以有屬於自己的格式

4)有了dtd不同的xml檔案可以使用同一種格式

5)有了dtd可以校驗乙個外部的xml檔案是否符合格式

c)dtd文件的宣告與引用

1) 內部dtd

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

]>

ivan

hello everyone

2) 外部dtd(推薦這種)

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

ivan

hello everyone

3)內部外部dtd

d)元素的語法:

type可選項:

1) empty 該元素不能包含子元素和文字,但可以有屬性(空元素)

2) any 該元素可以包含任何在dtd中定義的元素內容(非常少用沒啥實際意義)

3) #pcdata parsed character data可解析的字元資料(使用最多)

4)純元素型別 只包含子元素並且這些元素外沒有文字(使用最多)

5)混合型別 包含子元素和文字的混合體(很少用)

例:正確的

ivan   錯誤的

ivan

正確ivan            正確

c)修飾符號:

1)   ()    用來給元素分組   

2)     |   在列出的物件中選擇乙個

3)      +         該物件至少出現一次,可以出現多次(即1次或是多次)

4)      *          該物件允許出現零次,也可以出現多次(即0次或是多次)

5)      ?    該物件可以出現,但只能出現一次(即0次或是1次)

6)     ,   該物件必須按指定順序出現

注:給book裡的元素進行分成兩組,第一組id和author只能選擇一下

id可以出現1次或是多次

id可以不出現,也可以出次1次

id可以不出現,出現只能出現1次地

e)屬性的語法 例:

定義title元素的屬性name為必須填寫,值為任意字串

屬性型別:

1)cdata character data字元資料(常用)

2)id  表示該屬性的取值必須是唯一的(常用)

3)idref 屬性的值指向文件中其它地方宣告的值dd

4) idrefs  同idref。區別在於可以用空格分隔來引用多個。

5) nmtoken 是cdata的乙個子集。表示屬性必須是英文本母、數字、句號、破折號、下劃線、冒號、屬性值不能有空格

6) nmtokens  屬性值可以有空格

7) enumerated

屬性特點:

1)#required 必須有

2)#implied 可以有

3)#fixed 屬性的值必須是指定的固定值

這裡的值只能是ibm

4)為屬性提供乙個預設值

f)實體的語法

1)普通實體:

a)內部實體  單一的值

b)外部實體 檔案裡的值

&writer;

2)引數實體:

ivan

hello everyone

china

beijing

dtd 的侷限性

1)dtd不遵守xml語法(寫xml文件例項時候用一種語法,寫dtd的時候用另外一種語法)

2)dtd資料型別有限(與資料庫資料型別不一致)

3) dtd不可擴充套件

4) dtd不支援命名空間(命名衝突)

XML約束 DTD約束

xml語法 規範的 xml檔案的基本編寫規則。有 w3c組織制定的 xml約束 規範 xml檔案資料內容格式的編寫規則。由開發者自定義 dtd約束 語法相對簡單,功能相對簡單,學習成本相對低 schema約束 語法相對複雜,功能相對複雜,學習成本相對高 命名空間 1 匯入dtd方式 a 內部匯入 x...

XML約束 schema約束

1.什麼是schema約束?優勢在哪?xml的約束有兩種,分別是dtd約束和schema約束。因為dtd約束有很大的侷限性,所以我們通常都使用schema約束。優勢 2.xml schema約束開發 xml schema 檔案自身就是xml檔案,但他的副檔名通常為.xsd。和xml檔案一樣,xml ...

XML 約束DTD 約束Schema

作為框架的使用者 程式設計師 能夠在xml中引入約束文件 能夠簡單的讀懂約束文件 引入dtd文件到xml文件中 student.dtd element students student element student name,age,element name pcdata element age ...