• 热门标签

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

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

<!ENTITY EMAIL "elharo@metalab.unc.edu">
XML 实用大全
第 254 页
<!ENTITY LM "Last modified: ">
因日期对不同的文档可能会发生改变,故而忽略了&LM;中的日期。若把日期作为一个实体引用,不会带来任何好处。
现在,就可把清单9-1 内容重写成更加简洁的形式:
<DOCUMENT>
<TITLE>&ERH;</TITLE>
<SIGNATURE>
<COPYRIGHT>&COPY99; &ERH;</COPYRIGHT>
<EMAIL>&EMAIL;</EMAIL>
<LAS _MODIFIED>&LM; March 10, 1999</LAST_MODIFIED>
</SIGNATURE>
</DOCUMENT>
应用实体引用代替书写文本全文的一个好处是使得更改文本更加简便,在简单的DTD 被若干文档共享的情况下,特别有用。
例如,假设把电子邮件地址从elharo@metalab.unc.edu 更改为eharold@solar.stanford.edu,仅需按如下内容更改DTD 中
的一行内容,而勿需在多个文档中寻找和替换邮件地址:
<!ENTITY EMAIL "eharold@solar.stanford.edu">
9.2.2 在DTD 中使用通用实体引用
读者或许对是否能像下面的代码一样在一个通用实体引用中包含另一个通用实体引用表示怀疑,如下所示:
<!ENTITY COPY99 "copyright 1999 &ERH;">
实际上该例是合法的,因为ERH 实体作为COPY99 实体的一部分存在,而COPY99 实体本身最终又成为文档内容的一部分。尽
管存在某些限制,对于DTD 中的其他地方,若最终能转换成文档内容的一部分(例如作为缺省属性值),则也可在此处使用
通用实体引用。第一条限制:语句中不能使用如下的循环引用:
<!ENTITY ERH "&COPY99 Elliotte Rusty Harold">?
<!ENTITY COPY99 "copyright 1999 &ERH;">?
第二条限制:通用实体引用不能插入仅为DTD 的一部分且不能作为文档内容的文本。例如,下述简略用法的企图无法实现:
<!ENTITY PCD "(#PCDATA)">
<!ELEMENT ANTIMAL &PCD;>
XML 实用大全
第 255 页
<!ELEMENT FOOD &PCD;>
然而,利用实体引用把文本合并到文档的DTD 中的方法常常是有用的。为此目的,XML 使用将在下章中讲述的参数实体引用
来实现这一目的。
对通用实体值的限制仅在于不能直接包含三种字符:% 、&、”,可是能经过使用字符引用包含这三种字符。若&和%仅作为
实体引用的开头,而不代表自身含义,则可包含其中。限制很少意味着实体可包含标记和分割为多行。例如下面的SIGNATURE
实体是有效的:
"<SIGNATURE>
<COPYRIGHT>1999 Elliotte Rusty Harold</COPYRIGH >
<EMAIL>elharo@metalab.unc.edu</EMAIL>
<LAST_MODIFIED>March 10, 1999</LAST_MODIFIED>
</SIGNATURE>"
>
下一个关心的问题是实体是否可以拥有参数。能否使用上面的SIGNATURE 实体,但却改变每页中每一独立的LAST_MODIFIED
元素的数据?答案是否定的;实体仅为静态的替换文本。若需要给实体传送数据,应改为使用标记符,并在样式单中随同提
供适当的实现指令。
9.2.3 预定义通用实体引用
XML 预定义五个通用实体引用,如表9-1 所示。五个实体引用出现在XML 文档中用来代替一些特殊的字符,这些字符如果不
用引用方式就会被解释为标记。例如实体引用&lt;代表小于号<,小于符号<可解释为标记的开头。
考虑到最大限度的兼容,若计划使用预定义实体引用,就该在DTD 中声明这些引用。因为需要避免DTD 中字符的递归引用,
所以声明时必须相当小心。为方便引用的声明,字符引用使用字符的十六进制ASCII 值。清单9-2 显示了所需要的声明。
表9-1 XML 中的预定义实体引用
实体引用 字符
&amp; &
&lt; <
&gt; >
&quot; "
&apos;
清单9-2:预定义通用实体引用声明
<!ENTITY lt "&#38;#60;">
XML 实用大全
第 256 页
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">
XML 实用大全
第 257 页
9.3 外部通用实体
包含基本元素/文档实体的主文件以外的数据称为外部实体。通过外部实体引用可在文档中嵌入外部实体和从若干相互独立
的文件中获取数据组建为XML 文档。
仅使用内部实体的文档非常类似于HTML 模式。文档的完整文本存放于单一文件中,图像、JAVA 小程序、声音和非HTML 数
据也可链接入文件中,但至少在文件中要有所有的文本。当然,HTML 模式存在一些问题。特别在文档中嵌入动态信息的过
程是一件非常困难的事情。可通过使用CGI、JAVA 小程序所爱好的数据库软件、服务器方面提供的手段和其他各种各样的方
法嵌入动态信息,但HTML 仅提供静态文档支持。从若干文件中获取数据组建文档的行为必须在HTML 外部进行。HTML 中解
决这问题的最简单的方法是使用框架,但这是非常糟糕的用户界面,通常令用户迷惑和讨厌。
部分问题是HTML 文档不能自然地插入到另一个HTML 文档中,每个HTML 文档有且仅有一个BODY,服务器端嵌入法仅能提供
把HTML 片段嵌入文档的能力,而不是嵌入有效的文档实体,此外服务器端提供的引用需依赖于服务器的存在,而不是真正
的HTML 文档部分。
然而,XML 更加灵活。一个文档的基本元素没有必要与另一文档基本元素相同。即使两个文档共享同一基本元素,DTD 也可
声明元素对自身的包含。在适当的时候,XML 标准并不制止结构完整的XML 文档嵌入另一结构完整的XML 文档的做法。
但是,XML 走得更远一些,可定义一个机制,利用这机制可在若干本地或远程系统上的、较小的XML 文档的基础上建立新的
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(75)