任何对应于一个不被允许的字符的八位组用 URI 转义机制转义(即,将其转换成%HH,其中 HH 是字节值的十六进制记法)。
用得到的字符序列置换原来的字符。
除了系统标识符之外,外部标识符还可以包含公共标识符。试图存取实体内容的 XML 处理器可以用公共标识符试着产生一个可选 URI 引用。如果处理器无法做到这一点,它必须使用系统常量中的 URI 引用。在试着匹配之前,公共标识符中所有空白字符串必须被规范为单个空格字符(#x20),同时必须去掉前导和尾随空白。
当 XML 处理器遇到的实体使用了它不能处理的编码时,是一个严重错误。如果一个 XML 实体被确认为使用了某种编码(由默认值,编码声明或高层协议确定),但是它包含了在此编码中非法的八位组序列的话,是一个严重错误。如果一个 XML 实体没有编码声明而它的内容不是合法的 UTF-8 或 UTF-16 编码的话,也是一个严重错误。
包含编码声明的文本声明的例子:
4.4 XML 处理器对实体和引用的处理
下表汇总了字符引用,实体引用,和对未析实体的调用可以出现的上下文,以及每种情况下 XML 处理器的动作。最左边一列的标识指明了识别时的上下文:
4.4.3 进行验证时被包含(Included If Validating)
当 XML 处理器识别出一个对已析实体的引用,为了验证该文件,处理器必须包含此实体的置换文本。如果实体是外部的,而处理器不试图验证该 XML 文件,那么处理器可以,但不是必须,包含此实体的置换文本。如果一个不进行验证的处理器不包含此置换文本,它必须通知应用它识别出但没有读取此实体。
这条规则基于这样一个共识:由 SGML 和 XML 的实体机制提供的起初设计用于支持模块化创作的自动包含不一定适合于其他应用,尤其是文件浏览。例如,当浏览器遇到一个外部已析实体引用时,可能选择用可视方式表示其存在但只在被请求时才读取它进行显示。
S Name S (ExternalID
| PublicID)
S?
'>'
[VC: 唯一的记法名字]
[83] PublicID ::= 'PUBLIC' S PubidLiteral
有效性约束:唯一的记法名字
一个给定的 Name 只能被一个记法声明所声明.
XML 处理器必须向应用提供任何在属性值中,属性定义中或实体声明中定义或引用的记法的名字和外部标识符。它们还可以将外部标识符解析成系统标识符,文件名,或是应用调用相应处理器处理给定记法格式的数据的所需的其他信息。(但如果 XML 处理器或应用所运行的系统中没有处理 XML 文件声明和引用的记法的相应应用的情况,不是一个错误。)
4.8 文件实体(Document Entity)
[定义:文件实体(document entity)是实体树的根和 XML 处理器的处理起点。] 本规范没有规定 XML 如何定位文件实体;与其他实体不同,文件实体没有名字,而且可以完全不带任何标识地出现在处理器的输入流中。
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001!
Jgwy.Net-Jglt.Net