曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
日歷)。
在DTD 中聲明記號,并且用記號屬性描述嵌入XML 文檔中的非XML 數(shù)據(jù)的格式。接著再研究日期的例子,清單11-1 定義兩
種日期記號:ISO 8601 和美國慣用格式。然后將NOTATION 類型必需的FORMAT 屬性添加到每一個(gè)DATE 元素中,用來描述特
定元素的結(jié)構(gòu)。
清單11-1:ISO 8601 和美國慣用格式DATE 元素
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SCHEDULE [
<!NOTATION ISODATE SYSTEM
"http://www.iso.ch/cate/d15903.html">
<!NOTATION USDATE SYSTEM
"http://es.rice.edu/ES/humsoc/Galileo/Things/gregorian_calendar
.html">
<!ELEMENT SCHEDULE (APPOINTMENT*)>
<!ELEMENT APPOINTMENT (NOTE, DATE, TIME?)>
<!ELEMENT NOTE (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT TIME (#PCDATA)>
<!ATTLIST DATE FORMAT NOTATION (ISODATE | USDATE) #IMPLIED>
]>
<SCHEDULE>
<APPOINTMENT>
<NOTE>Deliver presents</NOTE>
<DATE FORMAT="ISDATE">12-25-1999</DATE>
</APPOINTMENT>
<APPOINTMENT>
XML 實(shí)用大全
第 324 頁
<NOTE>Party like it s 1999</NOTE>
<DATE FORMAT="ISODATE">19991231</DATE>
</APPOINTMENT>
</SCHEDULE>
記號不能強(qiáng)制作者使用記號描述的格式。因此需要提供除XML 基本方法以外的幾種語言方案——但是在相信作者能正確描述
日期的簡單應(yīng)用場合,記號方法是有效的。
XML 實(shí)用大全
第 325 頁
11.2 不可析外部實(shí)體
對所有的數(shù)據(jù),特別是非文本數(shù)據(jù),XML 格式都不是理想的格式。例如,可以按下面所示的方式,把位圖圖像的每一個(gè)像素
存為一個(gè)XML 元素:
<PIXEL X="32"Y="28" COLOR="FF5E32"/>
可是,這肯定不是一個(gè)好主意。任何微小的錯(cuò)誤都會導(dǎo)致氣球圖像文件的比例嚴(yán)重失衡。XML 現(xiàn)在和將來都永遠(yuǎn)不可能讓XML
文檔具有訪問數(shù)據(jù)的能力,因此無法把所有數(shù)據(jù)按XML 編碼。
一個(gè)典型的Web 頁面可以引用GIF 和JPEG 圖像、JAVA 小程序、ActiveX 控件、各種類型的聲音等等。在XML 中,因?yàn)閄ML
處理器不會去嘗試?yán)斫夥荴ML 格式的數(shù)據(jù)塊,所以把這些數(shù)據(jù)塊稱為不可析實(shí)體。至多XML 處理器通知應(yīng)用程序存在這樣的
實(shí)體,并且為應(yīng)用程序提供實(shí)體名和實(shí)體可能包含的內(nèi)容(可是這并不是必須執(zhí)行的動作)。
HTML 頁面通過各種定制的標(biāo)記嵌入非HTML 實(shí)體。圖片由具有SRC 屬性的<IMG>標(biāo)記引用,SRC 屬性提供圖像文件的URL;JAVA
程序由具有CLASS 和CODEBASE 屬性的<APPLET>標(biāo)記包括,CLASS 和CODEBASE 屬性指向JAVA 程序保存的文件和目錄;<OBJECT>
標(biāo)記來嵌入CODEBASE 屬性引用,可從中找到目標(biāo)數(shù)據(jù)的URI。每一種情況下,特定的預(yù)定義標(biāo)記表示一種特定的內(nèi)容。預(yù)
定義屬性包含其內(nèi)容的URL。
XML 應(yīng)用程序可以但不是必須這樣運(yùn)作,實(shí)際上,除了特意為保持與落后的HTML 之間的兼容性之外,大部分XML 應(yīng)用程序
都不這樣做。相反,XML 應(yīng)用程序使用不可析外部實(shí)體引用這些內(nèi)容。不可析外部實(shí)體提供與非XML 數(shù)據(jù)的實(shí)際位置的鏈接。
接著文檔中特定的元素利用其ENTITY 屬性與實(shí)體相連。
11.2.1 聲明不可析實(shí)體
回憶第9 章的內(nèi)容,外部實(shí)體的聲明看起來如下面的形式:
<!ENTITY SIG SYSTEM "http://metalab.unc.edu/xml/signature.xml">
可是,僅在URL 指明的外部實(shí)體恰好為完整的XML 文檔的時(shí)候,才能接受這種格式。如果外部實(shí)體不是XML,則不得不使用
NDATA 關(guān)鍵字指定實(shí)體類型。例如,為了用LOGO 名字連接GIF 格式文件logo.gif,就需在DTD 中放置如下的ENTITY 聲明:
<!ENTITY LOGO SYSTEM "logo.gif" NDATA GIF>
聲明中的最終名字必須是DTD 中聲明的記號名,如本例中的GIF。記號將GIF 類的名稱與某種類型的外部標(biāo)識符聯(lián)系起來,
外部標(biāo)識符標(biāo)識某種格式。如MIME 類型、ISO 標(biāo)準(zhǔn)式或者是格式規(guī)格的URL。例如,GIF 的記號類似下面的形式:
<!NOTATION GIF SYSTEM "image/gif">
通常,作為習(xí)慣的表示方法,可以使用絕對或相對的URL 指向外部實(shí)體。例如:
<!ENTITY LOGO SYSTEM "http://metalab.unc.edu/xml/logo.gif"
NDATA GIF>
<!ENTITY LOGO SYSTEM "/xml/logo.gif" NDATA GIF>
XML 實(shí)用大全
第 326 頁
<!ENTITY LOGO SYSTEM "../logo.gif" NDATA GIF>
11.2.2 嵌入不可析實(shí)體
不能與用通用實(shí)體引用嵌入可析實(shí)體一樣,在文檔中的任意位置簡單地嵌入不可析實(shí)體。例如,清單11-2 就是一個(gè)不合法
的是XML 文檔,因?yàn)長OGO 是不可析實(shí)體。如果這里的LOGO 是可析實(shí)體,本例就為有效的XML 文檔。
清單11-2:試圖用通用實(shí)體引用嵌入不可析實(shí)體的無效XML 文檔
<?xml version="1.0" standalone="no"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT ANY>
<!ENTITY LOGO SYSTEM "http://metalab.unc.edu/xml/logo.gif"
NDATA GIF>
<!NOTATION GIF SYSTEM "image/gif"
]>
<DOCUMENT>
&LOGO;
</DOCUMENT>
為了嵌入不可析實(shí)體,不采用如&LOGO;通用實(shí)體引用的方法;而是聲明一個(gè)元素,把該元素作為不可析實(shí)體的占位符(例
如IMAGE)。然后聲明IMAGE 元素屬性SOURCE 為ENTITY 類型,SOURCE 屬性僅提供不可析實(shí)體名。如清單11-3 所示。
清單11-3:正確嵌入不可析實(shí)體的合法的XML 文檔
<?xml version="1.0" standalone="no"?>
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實(shí)用大全(94)