曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<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>
XML 實用大全
第 270 頁
<SB>0</SB>
<CS>1</CS>
<SH>5</SH>
<SF>4</SF>
<E>3</E>
<BB>38</BB>
<S>50</S>
<HBP>4</HBP>
</PLAYER>
雖然可在本書附帶的CD-ROM 上的example\baseball\player 目錄中找到所有隊員名單,但這里省略了大約1200 名
的隊員名單。
文檔聲明必須具有encoding 屬性(與XML 聲明不同,XML 聲明可以擁有encoding 屬性,但不是必要的),encoding 屬性規
定實體使用的字符集。允許使用不同字符組寫出的復合文檔。例如,Latin-5 字符組寫出的文檔可與UTF-8 字符集寫出的文
檔結合為一體。處理器或瀏覽器依然必須理解不同實體使用的編碼。
本章中的所有例子以ASCII 編碼形式給出。因ASCII 編碼是ISO Latin-1 、UTF-8 的嚴格子集,所以可以使用如下的任一文
本聲明:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="UTF-8"?>
清單9-10 mets.dtd 和清單9-11 mets.xml 顯示如何利用外部可析實體組建完整的球隊文檔。在DTD 中為球隊中的每個隊員
定義外部實體引用。利用文檔內部DTD 子集中的外部參數實體引用,XML 文檔載入該DTD;然后,該文檔包括許多外部通用
實體引用來載入分立的隊員數據。
清單9-10:具有player 實體引用的New York Mets DTD(mets.dtd)
<!ENTITY AlLeiter SYSTEM "mets/AlLeiter.xml">
<!ENTITY ArmandoReynoso SYSTEM "mets/ArmandoReynoso.xml">
<!ENTITY BobbyJones SYSTEM "mets/BobbyJones.xml">
<!ENTITY BradClontz SYSTEM "mets/BradClontz.xml">
XML 實用大全
第 271 頁
<!ENTITY DennisCook SYSTEM "mets/DennisCook.xml">
<!ENTITY GregMcmichael SYSTEM "mets/GregMcmichael.xml">
<!ENTITY HideoNomo SYSTEM "mets/HideoNomo.xml">
<!ENTITY JohnFranco SYSTEM "mets/JohnFranco.xml">
<!ENTITY JosiasManzanillo SYSTEM "mets/JosiasManzanillo.xml">
<!ENTITY OctavioDotel SYSTEM "mets/OctavioDotel.xml">
<!ENTITY RickReed SYSTEM "mets/RickReed.xml">
<!ENTITY RigoBeltran SYSTEM "mets/RigoBeltran.xml">
<!ENTITY WillieBlair SYSTEM "mets/WillieBlair.xml">
圖9-3 顯示了載入到Internet Explorer 中的XML 文檔。請注意即使主文檔僅包含存儲隊員數據的實體引用,所有隊員數據
也能被顯示出來。Internet Explorer 解決了所有外部引用,這可不是所有的XML 語法分析程序或者瀏覽器都能做到的。
在CD-ROM 上的example\baseball 目錄中可找到其余球隊。請特別需要注意,簡潔的外部實體引用是如何嵌入多個隊員數據
的。
圖9-3 XML 文檔顯示1998 年New York Mets 隊中的所有球員。
清單9-11:具有從外部實體中載入的隊員數據的New York Mets(mets.xml)
<?xml version="1.0" standalone="no"?>
XML 實用大全
第 272 頁
<!DOCTYPE TEAM SYSTEM "team.dtd"[
<!ENTITY % players SYSTEM "mets.dtd">
%players;
]>
<TEAM>
< TEAM_CITY>New York</ TEAM_CITY>
< TEAM_ NAME>Mets</ TEAM_ NAME>
&AlLeiter;
&ArmandoReynoso;
&BobbyJones;
&BradClontz;
&DennisCook;
&GregMcmichael;
&HideoNomo;
&JohnFranco;
&JosiasManzanillo;
&OctavioDotel;
&RickReed;
&RigoBeltran;
&WillieBlair;
</TEAM>
通過組合球隊文件創建分部、通過組合分部文件創建聯盟、通過組合聯盟文件創建賽季的過程的延續,具有一定的好處。但
遺憾的是,所有努力只會帶來災難性的后果。通過外部實體的方法嵌套的文檔不能擁有自身的DTD。最多只能是序進程包含
文本聲明。這就是說,僅能擁有單一層次的文本嵌入。與此不同的是,DTD 嵌入可進行任意層次的嵌套。
XML 實用大全
第 273 頁
因此唯一可用的方法就是,在引用了許多不同球員文檔的單一文檔中包括所有球隊、分部、聯盟和賽季。需要1200 多個實
體聲明(每個隊員對應一個聲明)。因為DTD 可以深層嵌套,就引入如清單9-10 所示包含所有球隊定義的DTD 開始。如清
單9-12 所示。
清單9-12:球員的DTD(players.dtd)
<!ENTITY % angels SYSTEM "angels.dtd">
%angels;
<!ENTITY % astros SYSTEM "astros.dtd">
%astros;
<!ENTITY % athletics SYSTEM "athletics.dtd">
%athletics;
<!ENTITY % bluejays SYSTEM "bluejays.dtd">
%bluejays;
<!ENTITY % braves SYSTEM "braves.dtd">
%braves;
<!ENTITY % brewers SYSTEM "brewers.dtd">
%brewers;
<!ENTITY % cubs SYSTEM "cubs.dtd">
%cubs;
<!ENTITY % devilrays SYSTEM "devilrays.dtd">
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(79)