曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
可包含指向即將插入文檔的附加數據的實體引用。進行正確性檢查的XML 處理器在提交文檔給最終應用程序以前或顯示文件
以前,將把所有不同的實體引用結合為單一邏輯結構的文檔。
不進行正確性檢查的處理器可以但不一定插入外部對象;他們必須插入內部對象。
實體的主要目的在于保存如下內容:結構完整的XML,其他形式的文本或二進制數據。序進程和文檔類型聲明是它們所屬文
檔的基本元素的一部分。僅當XSL 樣式單本身就是一個結構完整的XML 文檔時,才能作為一個實體。組成XSL 樣式單的實體
并不是應用該樣式單的XML 文檔的組成實體之一。CSS 樣式單根本就不是一個實體。
大多數實體具有一個可以引用的名。唯一的例外是包含XML 文檔的主文件與文檔實體(與數據庫記錄、CGI 程序的輸出結果
或其他數據相對比,文檔實體也不一定是文件)。文檔實體無論采取何種結構,都是一種存儲單元,用于儲存XML 聲明、文
檔類型聲明(如果有)和基本元素。因此每個XML 文檔至少擁有一個實體。
有兩種類型的實體:內部實體和外部實體。完全在文檔實體內部定義的實體稱為內部實體。文檔本身就是這樣的實體,所以
所有的XML 文檔至少有一個內部實體。
相反,經由URL 定位的資源中獲取的數據稱為外部實體。主文檔僅包含一個實際引用數據位置的URL。在HTML 中,包含于
<HTML>和</HTML>標記之間的文檔本身是內部實體時,而IMG 元素(實際的圖像數據)代表外部實體。
XML 實用大全
第 251 頁
實體分為兩類:可析和不可析實體。可析實體包含結構完整的XML 文本。不可析實體包含二進制數據或非XML 文本(類似電
子郵件信息)。如果從本質上說,當前大多數XML 處理器不能很好地支持(如果不是完全支持的話)不可析實體,本章所關
注的是可析實體。
第11 章,非XML 數據和不可析對象的嵌套。
通過實體引用,可把來源于多個實體的數據合并在一起構成一個單一的文檔。通用實體引用把數據并入到文檔內容中。參數
實體引用把聲明并入到文檔的DTD 中。實中<;、>;、&apos;、"e;、&;是預定義的體引用,分別指的是文
本實體<、>、’、”、&符號。然而也可在文檔DTD 中定義新的實體。
XML 實用大全
第 252 頁
.2 內部通用實體
內部通用實體引用可看作經常使用的文本或強制格式文本的縮寫。DTD 中的<!ENTITY>標記定義縮寫,并且該縮寫就代替了
文本。例如,可在DTD 中簡單地把頁腳定義為實體footer,然后每頁只需鍵入&footer;,而勿需在每頁底部鍵入相同的頁
腳。此外,若決定更改頁腳塊(也許是因為你的電子郵件地址更改了),就僅需在DTD 中作一次更改即可,勿需對共享同一
頁腳的頁面逐個進行更改。
通用實體引用以“&”符號開始,以“;”結尾,兩個符號之間為實體名。例如,“<;”就是小于符號(<)的通用實體引
用,實體名為lt,該實體的替換文本就是一個字符“<”。實體名由字母和數字的混合排列以及下劃線構成,禁止使用空格
和其他標點符號字符。類似XML 中的其他內容,實體引用是區分大小寫的。
盡管從技術上說,允許在對象名中使用冒號“:”,但正如第18 章中所提及,此符號要保留用于命名域(namespace)。
9.2.1 定義內部通用實體引用
在DTD 中使用標記<!ENTITY>標記定義內部通用實體引用,具有如下格式:
<!ENITY name "replacement text">
name 是replacement text 的縮寫。替換文本需放置于雙引號中,因為其中可能包含空格和XML 標記。可在文檔中鍵入實體
名,而讀者所見為替換文本。
例如,我的名字為“Elliotte Rusty Harold”(這得怪我父母取了一個長名)。即使經過多年習慣,我依然常常打錯。我
可以為我的名字定義通用實體引用,這樣每次當我鍵入&ERH;時,讀者將會看見“Elliotte Rusty Harold”,這個定義如
下:
<!ENITY ERH " Elliotte Rusty Harold">
清單9-1 示例說明了&ERH;通用實體引用,圖9-1 中顯示了載入到Internet Explorer 的文檔。可看出,源代碼中的&ERH;
實體引用輸出時被替換為“Elliotte Rusty Harold”。
圖9-1 清單9-1 在內部通用實體引用被實際實體替換后的情形
清單9-1:ERH 內部通用實體引用
XML 實用大全
第 253 頁
<?xml version="1.0" standalone="Yes">
<!DOCTYPE DOCUME [
<!ETITY ERH "Elliotte Rusty Harold">
<!ELEMENT DOCUME (TITLE, SIGNATURE)>
<!ELEMENT TITLE (#PCDA A)>
<!ELEMENT COPYRIGHT (#PCDATA)>
<!ELEMENT EMAIL (#PCDA A)>
<!ELEMENT LAST_MODIFIED (#PCDATA)>
<!ELEMENT SIGNATURE (COPYRIGHT, EMAIL, LAST_MODIFIED)>
]>
<DOCUMENT>
<TITLE>&ERH;</TITLE>
<SIGNATURE>
<COPYRIGHT >1999 &ERH;</COPYRIGHT>
<EMAIL>elharo@metalab.unc.edu</EMAIL>
<LAS _MODIFIED>March 10, 1999</LAS _MODIFIED>
</SIGNATURE>
</DOCUMENT>
注意其中的通用實體引用,即使COPYRIGHT 和TITLE 聲明為僅接受#PCDATA 的子類,&ERH;依然出現在它們之中。因&ERH; 實
體引用的替換文本是可析的字符數據,所以這種排列是合法的。所有的實體引用被實體值替換后,才對文檔進行正確性檢查。
在使用樣式單時,也會發生相同的情形。當存在樣式單引用,在實體引用替換為實體值后,才把樣式應用于替換后實際存在
的元素樹狀結構中。
可按下列方式把版權、電子郵件或最后的修改日期聲明為通用實體引用:
<!ENTITY COPY99 "Copyright 1999">
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(74)