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)外部實體 檔案裡的值
2)引數實體:
&writer;
dtd 的侷限性
ivan
hello everyone
china
beijing
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 ...