曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<!ELEMENT HRA (#PCDATA)>
<!-Runs hit Against ->
<!ELEMENT RA (#PCDATA)>
<!-Earned Runs ->
<!ELEMENT ER (#PCDATA)>
<!-Hit Batter ->
<!ELEMENT HB (#PCDATA)>
<!-Wild Pitches ->
<!ELEMENT WP (#PCDATA)>
<!-Balk ->
<!ELEMENT B (#PCDATA)>
<!-Walked Batter ->
<!ELEMENT WB (#PCDATA)>
<!-Struck Out Batter ->
<!ELEMENT K (#PCDATA)>
XML 實用大全
第 266 頁
<!-======================= ->
<!-Fielding Statistics ->
<!-Not yet supported ->
當時用這個文件,這個DTD 還無法讓你創建非常有趣的文檔,清單9-6 顯示的是僅使用清單9-5 中PLAYER DTD 的簡潔有效
的文件。從這來說,這簡單的文件并不重要;然而,可在這些較小的部分外創建更加復雜的文件。
清單9-6:使用PLAYER DTD 的有效文檔
<?xml version="1.0" standalone="no">
<!DOCTYPE PLAYER SYSTEM "Player.dtd">
<PLAYER>
<GIVEN_NAME>Chris</GIVEN_NAME>
<SURNAME>Hoiles</SURNAME>
<P>Catcher</P>
<G>97</G>
<GS>81</GS>
<AB>267</AB>
<R>36</R>
<H>70</H>
<D>12</D>
<T>0</T>
<HR>15</HR>
<RBI>56</RBI>
<SB>0</SB>
<CS>1</CS>
<SH>5</SH>
<SF>4</SF>
XML 實用大全
第 267 頁
<E>3</E>
<BB>38</BB>
<S>50</S>
<HBP>4</HBP>
</PLAYER>
文檔的哪部分可擁有自己的DTD?這是顯而易見的,TEAM 就是其中的主要部分,可按如下方式書寫它的DTD:
<!ELEMENT TEAM ( EAM_CITY, EAM_NAME, PLAYER*)>
<!ELEMENT TEAM_CITY (#PCDATA)>
<!ELEMENT TEAM_NAME (#PCDATA)>
然而作仔細的檢查之后,就會注意到遺漏了某些東西:PLAYER 元素的定義。該定義位于player.dtd 獨立文件中,需要連接
到這個DTD 中。
可通過外部參數實體引用連接DTD。對私有的DTD,可按下列格式進行連接:
<!ENTITY % name SYSTEM "URI">
%name;
例如:
<! ENTITY % player SYSTEM "Player.dtd">
%player;
本例中使用了相對的URL(player.dtd),且假定player.dtd 文件所在位置與進行鏈接的DTD 的位置相同。若非這種情況,
可使用完整的URL 如下:
<! ENTITY % player SYSTEM
"http://metalab.unc.edu/xml/dtds/player.dtd">
%player;
清單9-7 顯示的是包含了對PLAYER DTD 引用的完整TEAM DTD:
清單9-7:TEAM DTD(team.dtd)
<!ELEMENT EAM ( EAM_CITY, EAM_ NAME, PLAYER*)>
XML 實用大全
第 268 頁
<!ELEMENT EAM_CITY (#PCDATA)>
<!ELEMENT EAM_ NAME (#PCDATA)>
<!ENTITY % player SYSTEM "Player.dtd">
%player;
SEASON 包含LEAGUE、DIVISION 和TEAM 元素。盡管LEAGUE 和DIVISION 元素可擁有自己的DTD,也沒有必要過分追求使用各
自獨立的DTD。除非希望擁有包含LEAGUE 或DIVISION 元素的文檔,該文檔不是SEASON 的一部分,在這種情況下,才可在
同一DTD 中引用所有三個DTD。如清單9-8 中說明了這種情況。
清單9-8:SEASON DTD(seasom.dtd)
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT LEAGUE (LEAGUE_NAME, DIVISION, DIVISION, DIVISION )>
<!-NAMErican or National ->
<!ELEMENT LEAGUE_ NAME (#PCDATA)>
<!-East, West, or Central ->
<!ELEMENT DIVISION_ NAME (#PCDATA)>
<!ELEMENT DIVISION (DIVISIO _ NAME, EAM+)>
<!ELEMENT SEASON (YEAR, LEAGUE, LEAGUE)>
<!ENTITY % team SYSTEM "team.dtd">
%team;
XML 實用大全
第 269 頁
.6 根據片段創建文檔
棒球的例子已相當龐大,盡管本書中的例子僅為縮減的版本,其中球員數目受到限制,但全文已超過0.5MB,內容過于龐大,
不便于裝載和查詢;特別是在讀者僅對其中某一隊員、球隊或分部感興趣時,尤其如此。本章中上一節講述的技術可允許把
這個文檔分割為許多不同的、較小的、便于管理的文檔,每個球隊、隊員、分部和聯盟各自對應一個文檔。通過外部實體引
用,隊員組成球隊,球隊組成分部,分部構成聯盟,聯盟構成賽季。
遺憾的是,無法按外部可析實體的樣式嵌入XML 文檔。考慮一下,例如清單9-9 ChrisHoiles.xml,這是清單9-6 的修訂版
本。然而,若仔細檢查兩個清單,將發現它們的序進程是不同的。9-6 清單的序進程為:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE PLAYER SYSTEM "Player.dtd">
清單9-9 的序進程是簡單的XML 聲明,沒有standalone 屬性,但卻有encoding 屬性;而且忽略了文檔類型聲明。像清單
9-9 這樣的文件表明將被嵌入另一文件中,其中的XML 聲明稱為文本聲明,雖然正如我們所看到的,它實際上正是一個合法
的XML 聲明。
清單9-9:ChrisHoiles.xml
<?xml version="1.0"encoding="UTF-8"?>
<PLAYER>
<GIVEN_ NAME>Chris</GIVEN_NAME>
<SURNAME>Hoiles</SURNAME>
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(78)