.xml外部實體引用
一、語法
XML宣告:
XML宣告放在XML文件的第一行
XML宣告由以下幾個部分組成:
version:文件符合xml1.0規範,我們學習1.0
encoding:文件字元編碼,比如“GB2312”或者“UTF-8”
standalone:文件定義是否獨立使用“no”為預設值表示不獨立(允許使用外部宣告
),yes表示獨立使用(不允許使用外部宣告)
<?sml version="1.0" ?>
這個就是xml的宣告,宣告也是處理指令,在xml中,所有的處理指令都以<?開始
,?>結束。<?後面緊跟著的是處理指令的名稱。xml處理指令要求指定一個version屬性。
並允許指定可選的standalone和encoding
規則:
(1)每個xml文件必須有且只有一個根元素
(2)在xml中,空格和換行都作為原始內容被處理,所以要小心
(3)命名規範:
區分大小寫,P和p是兩個不同的元素
不能以數字或下劃線“_”開頭
元素內不能包含空格
名稱中間不能包含冒號(:)
XML有5個預定義的實體字元
<<小於
>>大於
&&和號
''單引號
""雙引號
註釋:
以!--開始--結束
<!--這是一個註釋-->
xml組成:
<?xml version="1.0" encoding="utf-8" ?>
<元素 屬性=“屬性值”>標籤體</元素>
二、ΧΜL引用DTD檔案兩種情況:
1.內部dtd將standalone設為真。
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE root [
<!ELEMENT root EMPTY>
]>
2.外部dtd將standalone設定為假
<?xml version="1.0" standalone="no"?>
<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">
引用DTD檔案和xml一起使用,目的是對xml格式的約束:如下引用內部DTD
編寫DTD來約束xml如:
- <!ELEMENT root EMPTY> //EMPTY關鍵字表示元素是個空元素
- <!ELEMENT root ANY> //ANY關鍵字表示元素中可以出現任何內容,也可以為空
- //下面這個宣告表示root中可以有文字,也可以是空
- <!ELEMENT root (#PCDATA)> //()表示一個分組,其中是放的允許在元素出現的內容,#PCDATA表示文字
- <!ELEMENT root (child)> //child是子元素的名稱,這個宣告表示root中必須且只能有一個child元素
- <!ELEMENT root (child1,child2)>
- <!ELEMENT root (child1|child2)> //豎線與"OR"的意思相近,表示root元素中只能出現child1或child2
- <!ELEMENT root (child?)> //root中child子元素可以出現一次,也可以不出現
- <!ELEMENT root (child+)> //root中child子元素至少出現一次
- <!ELEMENT root (child*)> //root中child子元素可以出現任意次數或不出現
- <!ELEMENT root (child,(a,b))> //()還可以巢狀,這裡表示root元素中第一次子元素必須是child
- //緊接著是a或b
- <!ELEMENT root (child,(a,b)+)> //*,?,+這些量詞可作用於分組,這裡表示root元素中第一次子元素必須是child
- //緊接著是a或b出現一次或多次
<!ENTITY 實體引用名 “引用內容”>
實體分兩類:
1.一般實體(格式:&實體引用名)
2.引數實體(格式:%實體引用名)
一般實體,可以在XML文件中的任何位置出現的實體稱為一般實體。實體可以宣告為內部
實體還是外部實體。外部實體分SYSTEM和PUBLIC兩種。
SYSTEM引用本地計算機,PUBLIC引用公共計算機,外部實體格式如下:
<!ENTITY 引用名 SYSTEM(PUBLIC) "URL地址">
在XML中,實體必須在DOCTYPE宣告中宣告。<!DOCTYPE [...]>宣告在XML宣告的後面
如:<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE 根元素名 [
<!ENTITY 實體引用名 “引用內容”>
<!ENTITY 實體引用名 SYSTEM "引用內容">
]>
例項:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ENTITY titlue "引用字元1">
<!ENTITY titlue2 "引用字元2">
]>
<root>
<title value="&titlue;"> &titlue; </title>
<title2>
<value><a>&titlue2;</a></value>
</title2>
</root>
引用多個xml檔案例項:
有one.xml檔案和two.xml檔案
<?xml version="1.0" encoding="GBK"?>
<root>
<專案>gbk</專案>
<時間>2018</時間>
<狀態>start</狀態>
</root>
<?xml version="1.0" encoding="GBK"?>
<root>
<姓名>ll</姓名>
<年齡>18</年齡>
<畢業學校>bj</畢業學校>
</root>
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ENTITY one SYSTEM "./one.xml">
<!ENTITY two SYSTEM "./two.xml">
]>
<root>
&one;
&two;
</root>
注意:在引用實體時以‘&’開始‘;’結束。
引數實體:
引數實體只能在DTD中使用,引數實體的宣告格式:
<!ENTITY % 實體名 "實體內容">
引用方式:%實體名;
注意:引數實體引用不能出現在內部DTD的標記宣告內部,可以在標記宣告允許出現的地方出現。對於外部DTD則沒有這個限制。