1. 程式人生 > >.xml外部實體引用

.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個預定義的實體字元
&lt;<小於
&gt;>大於
&amp;&和號
&apos;'單引號
&quot;"雙引號
註釋:
以!--開始--結束
<!--這是一個註釋-->


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如:

  1. <!ELEMENT root EMPTY> //EMPTY關鍵字表示元素是個空元素  
  2.     <!ELEMENT root ANY> //ANY關鍵字表示元素中可以出現任何內容,也可以為空  
  3.     //下面這個宣告表示root中可以有文字,也可以是空  
  4.     <!ELEMENT root (#PCDATA)> //()表示一個分組,其中是放的允許在元素出現的內容,#PCDATA表示文字  
  5.     <!ELEMENT root (child)> //child是子元素的名稱,這個宣告表示root中必須且只能有一個child元素  
  6.     <!ELEMENT root (child1,child2)>
     //以逗號分隔,表示子元素依次出現  
  7.     <!ELEMENT root (child1|child2)> //豎線與"OR"的意思相近,表示root元素中只能出現child1或child2  
  8.     <!ELEMENT root (child?)> //root中child子元素可以出現一次,也可以不出現  
  9.     <!ELEMENT root (child+)> //root中child子元素至少出現一次  
  10.     <!ELEMENT root (child*)> //root中child子元素可以出現任意次數或不出現  
  11.     <!ELEMENT root (child,(a,b))> //()還可以巢狀,這裡表示root元素中第一次子元素必須是child  
  12.     //緊接著是a或b  
  13.     <!ELEMENT root (child,(a,b)+)> //*,?,+這些量詞可作用於分組,這裡表示root元素中第一次子元素必須是child  
  14.     //緊接著是a或b出現一次或多次  
三、xml引用實體格式如下:
<!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則沒有這個限制。