曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
本规则是基于S G M L和X M L实体机制提供的自动包含特征,它的主要目标是为了支持模
块化设计,但是它对于某些应用程序来说不一定合适,特别是文档浏览。例如,浏览器遇到
外部解析实体引用时,可以选择提供实体的可视化表示,并且仅在需要显示时才获取实体的
内容。
4.4.4 禁止
以下情况是禁止的,并且会产生致命错误:
• 出现对未解析实体的引用。
• 在D T D的E n t i t y Va l u e或A t t Va l u e之外出现字符引用或通用实体引用。
• 在属性值中引用外部实体。
4.4.5 以文字形式包含
当实体引用出现在属性值中,或者参数实体引用出现文字实体值中,要用置换文本取代引
用本身,并对置换文本进行处理,但是置换文本中的单引号或双引号字符总是被视作普通的数
据字符,而不能用作文字的结束。例如,下面的代码是格式正规的:
而下面的代码不是格式正规的:
4.4.6 通知
当未解析实体的名称作为记号出现在声明为E N T I T Y或E N T I T I E S类型的属性的值中时,验
证有效性的处理器必须将实体和相关的表示法的系统标识符和公共标识符(如果存在的话)通
知给应用程序。
4.4.7 忽略
当通用实体引用出现在实体声明的E n t i t y Va l u e中时,它被忽略。
4.4.8 作为P E包含
与外部解析实体类似,仅当验证有效性时才包含参数实体。当D T D中发现参数实体引用并
被包含时,要在它的置换文本的前后各增加一个空格字符( # x 2 0);其目的是约束参数实体的
置换文本,使D T D中能够包含完整的语法记号。
4.5 内部实体置换文本的结构
在讨论如何处理内部实体时,有必要分清两种形式的实体值。文字实体值是真正出现在实
体声明中用引号括起的字符串,与之对应的是非终结符E n t i t y Va l u e。当置换文本取代了字符引
用和参数实体引用之后,它将成为实体的内容。
内部实体声明中的文字实体值( E n t i t y Va l u e)可以包含字符引用、参数实体引用和通用实体
引用。这些引用必须完全包含在文字实体值中。对实体进行包含处理时,必须用参数实体的置换
文本取代相应的引用,用被引用的字符取代字符引用;但是,通用实体引用要保留。以下面的声
明为例:
836使用XML 高级编程
下载
实体“b o o k”将有如下的置换文本:
当引用“ & b o o k ;”出现在文档的内容或属性值中时,通用实体引用“ & r i g h t s ;”才会被展
开。
这些简单的规则可能会导致复杂的操作;“ D. 实体引用和字符引用的展开”讨论了一个繁
琐的例子。
4.6 预定义实体
实体引用和字符引用都能够用于转义左尖括号、与号及其他定界符。为此,专门定义了一
组通用的实体(a m p、l t、g t、a p o s和q u o t)。实际上,也可以使用数字字符引用; X M L处理器一
旦发现这类引用,会立即将它们展开,并将它们视作字符数据,因此当字符数据中出现数字字
符引用“& # 6 0 ;”和“& # 3 8 ;”时,它们是用来转义<和&符号的。
无论声明与否, X M L处理器必须识别这些实体。出于互操作性考虑,有效的X M L文档应该
首先声明这些实体,然后再引用它们。如果声明实体,它们必须被声明为内部实体,其中置换
文本是要转义的单字符,或者对该字符的字符引用。例如:
“l t”和“a m p”声明的置换文本都是双字符,其目的是为了满足实体置换的格式正规需求。
4.7 表示法声明
表示法可以由以下因素标识:未解析实体的格式,具有表示法属性元素的格式,或者处理
指令指定的应用程序。
表示法声明定义的表示法名称可以用在实体和属性列表声明以及属性说明中,声明中定义
的表示法外部标识符使得X M L处理器或客户端应用程序能够定位用于处理采用特定表示法的数
据的应用程序。
表A - 3 6
表示法声明
[ 8 2 ] N o t a t i o n D e c l : : = ' < ! N O TATION' S Name S (ExternalID |
PublicID) S? '>'
[ 8 3 ] P u b l i c I D : : = 'PUBLIC' S PubidLiteral
X M L处理器必须为应用程序提供所声明的以及在属性值、属性定义或实体声明中引用的表
示法的名称和外部标识符。它们还可以将外部标识符解析为系统标识符、文件名或者其他信息,
以便应用程序调用适当的处理程序处理表示法所描述的数据。(然而,对于X M L文档声明和引用
附录A XML 1.0规范使用837 下载
的表示法,即使X M L处理器或应用程序所运行的系统上没有处理该表示法的应用程序,也不会
产生错误。)
4.8 文档实体
文档实体是实体树的根,也是X M L处理器处理的起始点。本规范并未指定X M L处理器如
何定位文档实体;与其他实体不同的是,文档实体没有名称,在处理器的输入流中不会有任何
标识。
5. 一致性
5.1 验证有效性和不验证有效性的处理器
合乎规范的X M L处理器分为两类:验证有效性的和不验证有效性的。
对于文档实体内容和读到的其他解析实体中违反本规范定义的格式正规约束之处,验证有
效性和不验证有效性的处理器都必须报告。
验证有效性的处理器必须报告违反D T D中声明所定义的约束的情况,以及违反本规范定义
的有效性约束的情况。为了实现上述功能,验证有效性的X M L处理器必须读取并处理整个D T D
以及文档中引用的所有外部解析实体。
不验证有效性的处理器只需要检查包括整个内部D T D子集在内的文档实体是否符合格式正
规约束。虽然它们不必检查文档的有效性,但是它们需要处理内部D T D子集和读到的参数实体
中的所有声明,直至遇到第一个没有读取的参数实体的引用;换言之,它们必须使用这些声明
中的信息规格化属性值,包含内部实体的置换文本,以及提供缺省属性值。它们不能处理没有
读到的参数实体引用之后出现的实体声明或属性列表声明,因为此实体中包含的声明可能覆盖
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(90)