曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
參數實體引用必須在使用前聲明。下例是非法的,因為%PCD;引用在使用兩次后才加以聲明:
<!ELEMENT FOOD %PCD;>
<!ELEMENT ANTIMAL %PCD;>
<!ENTITY % PCD "(#PCDATA)">
參數實體引用僅能用于提供外部DTD 子集中的聲明。也就是說,參數實體引用僅能出現在外部DTD 子集的聲明中,上述例子
若用于內部DTD 子集,則所有引用無效。
在內部DTD 子集中,參數實體引用僅能用于聲明之外。例如下述語句在內部和外部DTD 子集中均有效。
<!ENTITY % hr "<!ELEMENT HR EMPTY>">
%hr;
當然,這與將HR 元素聲明為不帶參數實體引用相比沒有帶來使用上的便利:
<!ELEMENT HR EMPTY>
參數實體引用主要用于內部DTD 子集引用外部參數實體的情況;也就是引入不同文件中的聲明或部分聲明。下一節將講述這
部分內容。
XML 實用大全
第 262 頁
9.5 外部參數實體
前述例子中使用單一的DTD,用于定義文檔中所有的元素。然而文檔越長,這種技術應用越少。此外通常希望將DTD 中的部
分內容用于許多不同的地方。
例如,對描述很少發生變化的郵件地址DTD 來說,地址定義非常普遍,且可很方便地應用在不同的上下文中。類似地,清單
9-2 中列出的預定義實體引用可用于大部分XML 文檔中,但并不想總是對此清單進行拷貝和復制的操作。
可用外部參數實體把較小的DTD 組成大型的DTD。也就是說,一個外部DTD 可以鏈接到另一外部DTD,第二個DTD 引入第一
個DTD 中聲明的元素和實體。盡管嚴禁使用循環——若DTD2 引用DTD1,則DTD1 不能引用DTD2��但嵌套的DTD 也會
大型化和復雜化。
同時,將DTD 分解為小的、更便于管理的組塊,使得對DTD 的分析處理更加簡便。由于一個實體文檔和完整的DTD 存儲在單
一的文件中,在前幾章中的許多例子都過于龐大。若文檔和文檔的DTD 分割為幾個獨立的文件,就變得更加易于理解。
此外,描述一組元素的DTD 中采用較小的、模塊化的結構,使得不同的人或組織創建的DTD 之間的組合和匹配更加簡便。例
如,在寫一篇關于高溫超導的文章,可能會用到描述其中分子的分子科學DTD、記錄公式的數學DTD、描述圖形的向量DTD
和處理解釋性文本的HTML DTD。
特殊情況下,可使用Peter Murray-Rust 的 Chemical Markup Language 中的mol.dtd DTD、W3C 的Mathematical Markup
Language 中的MathML DTD、W3C 的 Scalable Vector Graphics 中的SVG DTD 和W3C 的 XHTML DTD。
我們還可以想出許多混合或者匹配來自不同領域的概念(也就是標記)的例子。人類的想法不會局限在狹窄的定義范圍內,
總是試圖遍及所有領域。所編寫的文檔就反映了這種思想。
讓我們研究如何把棒球比賽統計表組織為幾個不同的DTD 的聯合體。本例的層次非常分明。一個可能的分割方法是為PLAYER、
TEAM 和SEASON 分別編寫一個DTD。分割DTD 為更便于管理的方法遠不止一種,但這也不失為一個很好的例子。清單9-5 顯
示的是只為PALYER 建立的單獨的DTD,保存在player.dtd 文件中。
清單9-5:PLAYER 元素和它的子元素的DTD(player.dtd)
<!-Player Info ->
<!ELEMENT PLAYER (GIVEN _N AME, SURNAME, P, G,
GS, AB?, R?, H?, D?, ?, HR?, RBI?, SB?, CS?,
SH?, SF?, E?, BB?, S?, HBP?, W?, L?, SV?, CG?, SO?, ERA?,
IP?, HRA?, RA?, ER?, HB?, WP?, B?, WB?, K?)
>
<!-Player s last name ->
XML 實用大全
第 263 頁
<!ELEMENT SURNAME (#PCDATA)>
<!-Player s first name ->
<!ELEMENT GIVE _ NAME (#PCDATA)>
<!-Position ->
<!ELEMENT P (#PCDATA)>
<!-Games Played ->
<!ELEMENT G (#PCDATA)> <!桮ames Started ->
<!ELEMENT GS (#PCDATA)>
<!-======================= ->
<!-Batting Statistics ->
<!-At Bats ->
<!ELEMENT AB (#PCDATA)>
<!-Runs ->
<!ELEMENT R (#PCDATA)>
<!-Hits ->
<!ELEMENT H (#PCDATA)>
<!-Doubles ->
<!ELEMENT D (#PCDATA)>
<!-Triples ->
<!ELEMENT T (#PCDATA)>
<!-Home Runs ->
<!ELEMENT HR (#PCDATA)>
<!-Runs Batted In ->
<!ELEMENT RBI (#PCDATA)>
XML 實用大全
第 264 頁
<!-Stolen Bases ->
<!ELEMENT SB (#PCDATA)>
<!-Caught Stealing ->
<!ELEMENT CS (#PCDATA)>
<!-Sacrifice Hits ->
<!ELEMENT SH (#PCDATA)>
<!-Sacrifice Flies ->
<!ELEMENT SF (#PCDATA)>
<!-Errors ->
<!ELEMENT E (#PCDATA)>
<!-Walks (Base on Balls) ->
<!ELEMENT BB (#PCDATA)>
<!-Struck Out ->
<!ELEMENT S (#PCDATA)>
<!-Hit By Pitch ->
<!ELEMENT HBP (#PCDATA)>
<!-======================= ->
<!-Pitching Statistics ->
<!-Complete Games ->
<!ELEMENT CG (#PCDATA)>
<!-Wins ->
<!ELEMENT W (#PCDATA)>
<!-Losses ->
<!ELEMENT L (#PCDATA)>
XML 實用大全
第 265 頁
<!-Saves ->
<!ELEMENT SV (#PCDATA)>
<!-Shutouts ->
<!ELEMENT SO (#PCDATA)>
<!-ERA ->
<!ELEMENT ERA (#PCDATA)>
<!-Innings Pitched ->
<!ELEMENT IP (#PCDATA)>
<!-Home Runs hit Against ->
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(77)