曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
参数实体引用必须在使用前声明。下例是非法的,因为%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.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML实用大全(77)