• 热门标签

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

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

</DIVISION>
</LEAGUE>
</SEASON>
表8-1 列出了本例中的元素及它们必须遵守的条件。每一元素都有它必须包含的元素、它可能包含的元素以及必须包含它的
元素。有些情况下,一个元素可能包含不止一个同一类型的子元素。SEASON 元素包含一个YEAR 和两个LEAG UE 元素。一个
XML 实用大全
第 195 页
DIVISION 通常包含不止一个TEAM 元素。较不明显的是,一些击球手在各场比赛中在指定的投球手和外场之间交替出现。这
样,一个PLAYER 元素就可能有不止一个POSITION。在该表格中,要求的子元素的数目是通过在元素前加数字来指明的(如
2 LEAGUE),而多子元素的可能性是通过在元素名尾加(s)指明的,如PLAYER(s)。
清单8-4 遵守了这些条件。如果把两个PLAYER 元素和一些TEAM 元素省略,文档可以短些。如果包括进其他一些PLAYER 元
素,文档就会长些。但是其他元素的位置都不能变动。
XML 元素有两种基本类型。简单元素包含文本,也就是所谓的可析字符数据,即上下文中的#PCDATA 或PCDATA。
复合元素包含其他元素,有的还包含文本和其他元素。标准XML 没有整数、浮点、日期或其他数据类型。因而不能使用DTD
说明走步数一定是一个非负的整数,或ERA 一定是0.0 和1.0 之间的一个浮点数,尽管在如本例一样的例子中这样做是有用
的。有人做过努力来定义一种方案,以便使用XML 句法描述传统上DTD 中编码的信息以及数据类型信息。直到1999 年中期,
这些努力仍主要是理论上的,很少有实际的实现方式。
表格8-1 棒球统计中的元素
元素 必须包含的元素 可能包含的元素 必须包含它的元素
SEASON YEAR 2 LEAGUE
YEAR 文本 SEASON
LEAGUE
LEAGUE_NAME,
3 DIVISION
SEASON
LEAGUE_NAME 文本 LEAGUE
DIVISION
DIVISION_NAME,
TEAM
TEAM(s) LEAGUE
DIVISION_NAME 文本 DIVISION
TEAM
TEAM_CITY,
TEAM_NAME
PLAYER(s) DIVISION
TEAM_CITY 文本 TEAM
TEAM_NAME 文本 TEAM
XML 实用大全
第 196 页
PLAYER SURNAME, GIVEN_NAME,
POSITION, GAMES
GAMES_STARTED, AT_BATS,RUNS,
HITS,
DOUBLES,TRIPLES,
HOME_RUNS, RBI,
STEALS,
CAUGHT_STEALING,
SACRIFICE_HITS,
SACRIFICE_FLIES,
ERRORS, WALKS,
STRUCK_OUT,
HIT_BY_PITCH,
COMPLETE_GAMES, SHUT_OUTS,
ERA, INNINGS,
HIT_BATTER,
WILD_PITCHES, BALK,
WALKED_BATTER,
STRUCK_OUT_BATTER
TEAM
SURNAME 文本 PLAYER
GIVEN_NAME 文本 PLAYER
POSITION 文本 PLAYER
GAMES 文本 PLAYER
GAMES_STARTED 文本 PLAYER
AT_BATS 文本 PLAYER
RUNS 文本 PLAYER
HITS 文本 PLAYER
DOUBLES 文本 PLAYER
TRIPLES 文本 PLAYER
HOME_RUNS 文本 PLAYER
RBI 文本 PLAYER
STEALS 文本 PLAYER
CAUGHT_STEALING 文本 PLAYER
SACRIFICE_HITS 文本 PLAYER
SACRIFICE_FLIES 文本 PLAYER
ERRORS 文本 PLAYER
WALKS 文本 PLAYER
STRUCK_OUT 文本 PLAYER
HIT_BY_PITCH 文本 PLAYER
COMPLETE_GAMES 文本 PLAYER
SHUT_OUTS 文本 PLAYER
ERA 文本 PLAYER
INNINGS 文本 PLAYER
HOME_RUNS_AGAINST 文本 PLAYER
XML 实用大全
第 197 页
RUNS_AGAINST 文本 PLAYER
HIT_BATTER 文本 PLAYER
WILD_PITCHES 文本 PLAYER
BATTER 文本 PLAYER
STRUCK_OUT_BATTER 文本 PLAYER
既然已经标识了要存储的数据,以及这些元素间可选的和必然的关系,就可以为简明概括那些联系的文档建立DTD 了。
从一个DTD 剪切和粘贴到另一个往往是很可行和方便的。许多元素可以在其他上下文中再使用。例如,对TEAM 的描写同样
可应用于足球、曲棍球和很多其他在队间进行的运动。
可以把一个DTD 包括在另一个之内,这样文档就可以从两个DTD 中得到标记。例如,可以使用一份详细地描写单个队员的统
计数据的DTD 然后把该DTD 嵌套在更广泛的球队运动的DTD 内。如想从棒球转换到足球,只要简单地把棒球球员DTD 换为足
球球员DTD 就可以了。
为达到此目的,包含DTD 的文档就被定义为外部实体。外部参数实体引用将在第9 章“实体”中讨论。
XML 实用大全
第 198 页
8.5 元素声明
在合法的XML 文档中使用的每项标记都要在DTD 中的元素声明中加以声明。一项元素声明指明了元素名称和元素可能的内容。
内容清单有时称为内容规格。内容规格使用一种简单的语法精确地指明文档中允许什么和不允许什么。这听起来复杂,却只
需在元素名称上加上如*、?或+的标点以便指明它可能出现不止一次,可能出现或可能不出现,或必须出现至少一次。
DTD 很保守,没有明确允许的就是禁止的。然而,DTD 句法使您能够严格地区分那些用语句很难说清的关系。例如,DTD 很
容易地说明GIVEN_NAME 要在SURNAME 前,而SURNAME 必须放在POSITION 前,POSITION 要放在GAME 前,GAME 要放在
GAMES_STARTED 前,GAMES_STARTED 要放在AT_BATS 前,AT_BATS 要放在RUNS 前,RUNS 要在HITS 前,所有这些只能出现在
一个PLAYER 元素内。
从外到内,逐级建立DTD 是最容易的。这使您能在建立DTD 的同时建立一份样本文档来验证DTD 本身是合法的和真正地描述
您想要的格式。
8.5.1 ANY
要做的第一件事是标识基本元素。在棒球的例子中,SEASON 是基本元素。!DOCTYPE 声明指明了这一点:
<!DOCTYPE SEASON [
]>
但是,这仅仅是说基本标记是SEASON,而没有提到元素能或不能包含的内容,这就是为什么接下来要在元素声明中声明
SEASON 元素。这可通过下列一行代码来实现:
<!ELEMENT SEASON ANY>
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(61)