Xml文檔結構
<?xml version=”1.0” [遵循的規範為1.0] encoding=”utf-8”[編碼集] standalone=”yes”[是否為獨立的xml文檔] ?>
<!DOCTYPE 根標記的名稱 SYSTEM “dtd1.dtd”>dtd的引用
<根標記>
<子標記></子標記>
。。。。。。。
</根標記>
dtd1.dtd為了定義能在xml文檔中出現的元素有哪些、元素的屬性、元素的順序
<!xml version=”1.0” encoding=”utf-8”?>
<!ELEMENT元素的名稱 元素的類型>-------定義元素
<!ATTLIST 元素名 屬性名稱 類型 keyword[是必須選的還是可以不選] “預設值”>--------定義元素的屬性
<!ELEMENT br EMPTY>---br不能有內容,可以為<br/>單標記或者<br></br>中間不能有內容
<!ELEMENT 元素名 (#PCDATA)>-------PCDATA定義的元素的裡面是文本,不能包含子標籤
<!ELEMENT 學生 (學號,姓名)>--------學生裡面只能出現學號和姓名這兩個子標記
<!ELEMENT 學生 (#PCDATA|學號|姓名)*>--------姓名和學號可以無序的出現多次,要是沒有*那麼就是互斥
定義混合內容元素
<!ELEMENT 父元素名 (#PCDATA|子項目1|子項目2|子項目3…..)*>
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 喜歡的遊戲 (#PCDATA | 遊戲)*>
<!ELEMENT 遊戲 (#PCDATA | 遊戲名稱 | 遊戲類型)*>
<!ELEMENT 遊戲名稱 (#PCDATA)>
<!ELEMENT 遊戲類型 (#PCDATA)>
<!xml version=”1.0” encoding=”utf-8”?>
<喜歡的遊戲>
這是我喜歡的遊戲
<遊戲>
<遊戲名稱>
這是遊戲名稱,名稱和類型可以互換位置,可以出現多次
</遊戲名稱>
<遊戲類型>
這是遊戲類型
</遊戲類型>
</遊戲>
</喜歡的遊戲>
<書籍列表>
<電腦書籍>
<書名>完全</書名>
</電腦書籍>
<電腦書籍>
<價格></價格>
</電腦書籍>
</書籍列表>
ATTLIST 元素名 屬性名稱 類型 keyword “預設值“屬性名稱 類型 keyword “預設值“…>
#REQUIRED 該屬性是必須的
#IMPLIED 該屬性可以沒有
#FIXED 該屬性有固定值,不論設定或不設定,都為固定值
Eg:
<!ELEMENT 作者 地址 CDATA #FIXED “保定市”>
<!ATTLIST 作者 性別 (男|女) “男”>---------枚舉類型,預設為男,只能在男女之間選
<!ELEMENT 讀者 EMPTY >
<!ATTLIST 讀者 書號 IDREF #IMPLIED>--------讀者所讀書的書號
<!ATTLIST 讀者 書號 IDREFS #IMPLIED>-------------在xml中可以寫出多本書的書號
<讀者 書號=”it0001 it0002 ”>
子項目之間存在的邏輯關係:
1、 有序的子項目
用英文逗號(,)作為子項目之間的分隔字元,則子
元素之間必須遵守所定義的順序。
2、 互斥的子項目
互斥的子項目表明一系列子項目之間只能出現
其中一次。互斥子項目使用豎線(|)分隔,以豎
線(|)分隔的多個元素只能出現其中之一。
3、 無序的子項目
<!ELEMENT 學生 (#PCDATA|學號|姓名)*>--------姓名和學號可以無序的出現多次,要是沒有*那麼就是互斥
子項目出現的頻率:
+: 表明子項目可以出現1次或多次
*: 表明子項目可以出現0次或多次
?: 表明子項目可以出現0次或1次
定義任意類型的元素
<!ELEMENT 元素名 ANY>
定義字串內容的元素
<!ELEMENT 元素名 #PCDATA>
定義屬性類型
屬性類型 |
含義 |
CDATA |
值為字串資料 |
(en1|en2|..) |
此值是枚舉列表中的一個值 |
ID |
該屬性值必須是有效地標識符,在XML文檔時唯一的 |
IDREF |
值為另外一個元素的 id屬性值 |
IDREFS |
值必須引用自多個已經有的ID屬性值,多個ID屬性值用空格隔開 |
NMTOKEN |
值為合法的 XML 名稱 |
NMTOKENS |
值為多個合法的 XML 名稱的列表 |
ENTITY |
值是一個外部實體,片支援 |
ENTITIES |
值是一個實體列表,多個實體之間以空格隔開 |
NOTATION |
該屬性值是在DTD中聲明過的符號,這個是到期的,不要使用 |
定義實體作用
1、提高代碼的敷用,方便修改,維護XML文檔
2、使用某些特殊的符號,這些特殊的符號可能會使XML解析器混淆
3、減少字元輸入量,如果某個字串特別長,而且需要經常使用,則可以定義為實體
content “詳細的內容介紹”
&content;------實體引用,相當於字串“詳細的內容介紹”
實體的分類
1、按照實體的具體內容來分類,實體可分為可解析與不可解析兩類。
2、按照邏輯儲存來分類,實體可分為內部實體與外部實體兩類
3、按照使用的範圍來分類,實體可分為一般實體與參數實體兩類。
定義普通實體
<!ENTITY 實體名 “實體值”>------內部實體,一般的普通實體
<!ENTITY title “所有電腦書籍的列表”>
使用實體的文法:
&實體名;
&title;
定義參數實體
<!ENTITY % 實體名 “實體值”>
使用實體的文法:
%實體名
外部普通實體
<! ENTITY 實體名 SYSTEM “實體值所在檔案的URI”>
<! ENTITY 實體名 PUBLIC “公用實體標識名” “實體值所在檔案的URI”>
外部參數實體
<!ENTITY %實體名 SYSTEM|PUBLIC[“公用實體標識名”] “實體值所在檔案的URI”>