XML約束,xml
XML約束--能夠看懂約束內容,根據約束內容寫出符合規則的xml檔案。 DTD約束
1)匯入dtd方式
內部匯入
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> |
外部匯入
本地檔案系統:
<!DOCTYPE note SYSTEM "note.dtd"> |
公用的外部匯入:
<!DOCTYPE 根項目 PUBLIC "http://gz.itcast.cn/itcast.dtd"> |
2)DTD文法
約束標籤
<!ELEMENT 元素名稱 類別> 或 <!ELEMENT 元素名稱 (元素內容)>
類別:
空標籤: EMPTY。 表示元素一定是空元素。
一般字元串: (#PCDATA)。表示元素的內容一定是一般字元串(不能含有子標籤)。
任何內容: ANY。表示元素的內容可以是任意內容(包括子標籤)
(元素內容):
順序問題:
<!ELEMENT 元素名稱 (子項目名稱 1,子項目名稱 2,.....)>: 按順序出現子標籤
次數問題:
標籤 : 必須且只出現1次。
標籤+ : 至少出現1次
標籤* : 0或n次。
標籤? : 0 或1次。
約束屬性
<!ATTLIST 元素名稱 屬性名稱 屬性類型 預設值>
預設值:
#REQUIRED 屬性值是必需的
#IMPLIED 屬性不是必需的
#FIXED value 屬性不是必須的,但屬性值是固定的
屬性類型:控制屬性值的
CDATA :表示一般字元串
(en1|en2|..): 表示一定是任選其中的一個值
ID:表示在一個xml文檔中該屬性值必須唯一。值不能以數字開頭
Schema約束
名稱空間:告訴xml文檔的哪個元素被哪個schema文檔約束。 在一個xml文檔中,不同的標籤可以受到不同的schema文檔的約束。
1)一個名稱空間受到schema文檔約束的情況
2)多個名稱空間受到多個schema文檔約束的情況
3)預設名稱空間的情況
4)沒有名稱空間的情況