• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

<!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.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(78)