注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
上网要当心!HTML文件也能格式化
为imail和Mdaemon设计Webmail---
qmail+vpopmail+mysql+qmailadmi
邮件列表黄金搭档—Qmail+Ezmlm
XML文件导入SQL Server 2000
将XML文件导入SQL Server 2000
SQL Server和XML的集成
SQL Server XML 和 Web 应用体系
深入探讨SQL Server 2000对XML的
SQL Server 2000 XML 概述
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> XML >> 文章正文
XML1.0 中文文档(第二版)---4. 物理结构
作者:译者:裘强 (qqiu@yeah.net)  来源:不详  点击:  更新:2006-12-19
简介:
4. 物理结构
    4.1 字符和实体引用
    4.2 实体声明
        4.2.1 内部实体
        4.2.2 外部实体
    4.3 已析实体
        4.3.1 文本声明
        4.3.2 格式正确的已析实体
        4.3.3 实体中的字符编码
    4.4 XML 处理器对实体和引用的处理
        4.4.1 不被识别
        4.4.2 被包含
        4.4.3 进行验证时被包含
        4.4.4 被禁止
        4.4.5 作为常量被包含
        4.4.6 通知
        4.4.7 不处理
        4.4.8 作为参数实体被包含
    4.5 内部实体置换文本的构建
    4.6 预定义实体
    4.7 记法声明
    4.8 文件实体

[定义:一个 XML 文件可能包含一个或多个存储单元。它们被称为实体(entity);它们都具有内容并且都用名字进行标识(除了文件实体,见下,和外部 DTD 子集之外)。] 每一个 XML 文件有一个称为文件实体的实体,它作为 XML 处理器处理的起点并可能包含了整个文件。

实体可以是已析的或未析的。[定义:已析实体(parsed entity)的内容被称为它的置换文本;此文本被看成是文件整体的一部分。]

未析实体(unparsed entity)是一种资源,其内容可以是也可以不是文本,并且,如果是文本的话,可以不是 XML 文本。每一个未析实体有一个相关联的用名字标识的记法。除了要求 XML 处理器能向应用提供实体和记法的标识符之外,XML 对未析实体的内容不作任何限制。]

已析实体以实体引用的方式使用名字来调用;未析实体用 ENTITYENTITIES 属性中给出的名字调用。

[定义:普通实体(general entity)是那些在文件内容中使用的实体。在本规范中,普通实体有时用未修饰的术语entity来表示。] [定义:参数实体是用于 DTD 内的已析实体。]这两类实体用不同形式的引用,在不同的上下文中识别。另外,它们使用不同的名字空间;具有相同名字的参数实体和普通实体是两个截然不同的两个实体。

4.1 字符和实体引用(Character and Entity References)

一个字符引用引用 ISO/IEC 10646 字符集中的一个字符。例如不能用输入设备直接输入的字符。

字符引用
[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' [WFC: 合法字符]

格式正确性约束: 合法字符 用字符引用引用的字符必须匹配 Char 产生式。

如果字符引用以 "&#x" 开头,直到终结 ; 的数字和字母提供了某字符在 ISO/IEC 10646 中代码的一个十六进制表示。如果它仅以 "&#" 开头,直到终结 ; 的数字提供了某字符的代码的十进值表示。

实体引用(entity reference)引用一个命名实体的内容。对已析普通实体的引用使用 "and" 号(&)和分号(;)作为定界符。参数实体引用则使用百分号(%)和分号(;)作为定界符。

实体引用
[67] Reference ::= EntityRef | CharRef [68] EntityRef ::= '&' Name ';' [WFC: 声明实体] [VC: 声明实体] [WFC: 已析实体] [WFC: 无递归] [69] PEReference ::= '%' Name ';' [VC: 声明实体] [WFC: 无递归] [WFC: 在 DTD 内]

格式正确性约束: 声明实体 在一个没有任何 DTD 的文件,或一个只有不包含参数实体引用的内部 DTD 子集的文件,或一个 "standalone='yes'" 的文件内,不在外部子集或参数实体内的实体引用中给出的 Name 必须与不在外部子集或参数实体内实体声明中所给出的相匹配,但格式正确的文件不需要声明以下的这些实体:ampltgtaposquot。普通实体的声明必须先于任何在属性表声明中的缺省值中出现的对它的引用。注意,对于在外部子集或外部参数实体中声明的实体,不进行验证的处理器不必要读取和处理它们的声明;对这些文件,仅当 standalone='yes' 时,实体必须被声明的规则才是一个格式正确性约束。

有效性约束: 声明实体 在一个有外部子集或外部参数实体且 "standalone='no'" 的实体中,实体引用中给出的 Name 必须与实体声明中所给出的相匹配。出于互操作性考虑,有效的文件应该以"4.6 预定义实体"中的简化形式声明实体 ampltgtaposquot。参数实体的声明必须先于任何对它的引用。类似地,普通实体的声明必须先于任何在属性表声明中的缺省值中出现的对它直接或间接的引用。

格式正确性约束: 已析实体 实体引用不能包含一个未析实体的名字。未析实体只能在声明为 ENTITYENTITIES属性值中引用。

格式正确性约束: 无递归 已析实体不能直接或间接地包含对自身的递归引用。

格式正确性约束: 在 DTD 内 参数实体引用只能在 DTD 中出现。

字符引用和实体引用的例子:

Type less-than (<) to save options. This document was prepared on &docdate; and is classified &security-level;.

参数实体引用的例子:

%ISOLat2;

4.2 实体声明(Entity Declaration)

[定义:实体以如下方式声明:]

实体声明
[70] EntityDecl ::= GEDecl | PEDecl [71] GEDecl ::= 'Name S EntityDef S? '>' [72] PEDecl ::= 'S Name S PEDef S? '>' [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?) [74] PEDef ::= EntityValue | ExternalID

实体引用中的 Name 标识了该实体;对于未析实体,ENTITYENTITIES 属性的值标识了该实体。如果同一实体被声明了不止一次,绑定第一个遇到的声明。由使用者选择,如果实体被多次声明,XML 处理器可以给出警告。

4.2.1 内部实体(Internal Entities)

[定义:如果实体定义是一个 EntityValue,被定义的实体被称为内部实体。] 内部实体没有单独的物理存储对象,实体的内容在声明中给出。注意常量实体值中一些实体和字符引用的处理可能要求产生正确的置换文本:参见"4.5 内部置换文本的构造"。

内部实体是已析实体

内部实体声明的例子:

4.2.2 外部实体(External Entities)

[定义:如果实体不是内部的,那么它是一个外部实体,声明如下:]

外部实体声明
[75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral [76] NDataDecl ::= S 'NDATA' S Name [VC: 声明记法]

如果有 NDataDecl,那么这是一个普通未析实体;否则它是一个已析实体。

有效性约束: 声明记法 Name必须与记法的名字相匹配。

[定义:SystemLiteral 被称为该实体的系统标识符。这是一个 URI 引用(在 [IETF RFC 2396] 中定义,在 [IETF RFC 2732] 中更新),可以由此获得 XML 处理器的输入用于构建此实体的置换文本。] 片断标识符(以 # 开头)出现在系统标识符中是一个错误。如果一个片断标识符作为系统标识符的部分给出,XML 处理器可以给出一个错误。除非在本规范范围之外另外给出(如,一个特殊 DTD 中定义的专用 XML 元素类型,或一个特殊应用规范中定义的处理指令),相对 URI 指相对于实体声明所在资源的位置。因此,一个 URI 可能是相对于文件实体,或相对于包含外部

[1] [2] [3] 下一页






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务