跳转到内容

SGML实体

维基百科,自由的百科全书

标准通用标记语言 里, 一个 实体 是一个原始数据类型

实体类型

实体被归类为一般或参数:

  • 一般实体 只能引用文档里头的内容。
  • 参数实体 只能引用文档类型定义里头的。

实体也进一步分类,解析和未解析的:

  • 已解析的实体 包含文本,将被合并到文档的解析,如果被引用的实体。参数实体只能是已解析的实体。
  • 未解析的实体 包含任意类型的数据,对它的引用将导致应用程序的实体的存在,只是被通知;该实体的内容将不能被解析,即使它是文本。未解析的实体只能是外部的。

内部和外部实体

一个 内部实体有一个值要么是一文字字符串,或一个解析字符串包括标记和实体定义在同一文档中(如文件类型描述或子文档)。相反,一个外部实体有一个声明调用一个外部文件,因此必须干预一个实体管理器来达到解决外部文件引用的目的。

系统实体

一个 系统实体 调用可选的SYSTEM ,它指示标准通用标记语言解析器处理实体的字符串所指的资源标识符。

文档实体

当外部实体引用一个完整的标准通用标记语言文档,它是已知的文档作为调用 标准通用标记语言文档实体。一个标准通用标记语言文档是一个文字文件同标准通用标记语言的标记在标准通用标记语言序章定义。一个完整的标准通用标记语言文档不仅包括文档实例本身,序言和可选的标准通用标记语言声明(其中定义文档的标记语法和声明字符编码)。

语法

一个实体定义通过一个实体声明 在一个文档类型声明的文档里头文件类型描述。 例如:

<!ENTITY 名称 "超级无线保真">
<!ENTITY 栈 SYSTEM "file:///网关接口.入口">
<!ENTITY % 欢迎语 "你好!">
<!ENTITY 欢迎语贰 "%欢迎语; 意为您好!">

此文档类型定义标记声明如下:

  • 一个内部一般实体命名为"名称",和字符串构成的"超级无线保真"。
  • 一个外部一般实体命名为"栈",和由标识的资源里头找到的文本"file:///网关接口.入口"。
  • 一个内部参数实体命名为"欢迎语",和由字符串"你好!"。
  • 一个内部一般实体命名为"欢迎语贰",和由字符串"你好!意为您好!"。

实体名称必须遵循标准通用标记语言名称 的规则,也有局限性可以参照实体。

从上面的例子中,一般的实体中引用的文件如下:

<内容>
      <信息>'&名称;'是一种常见的测试字符串。</信息>
      <信息>网关接口.入口 的内容是: &栈;</信息>
      <信息>中华人民共和国汉语 &欢迎语贰;</信息>
</内容>

当解析,本文件将被报告的向下的流的应用程序相同的,如果它已被写为如下假设“网关接口.入口”文件包含文本"称呼语":

<内容>
      <信息>'&名称;'是一种常见的测试字符串。</信息>
      <信息>网关接口.入口 的内容是:称呼语</信息>
      <信息>中华人民共和国汉语 你好!意为您好!</信息>
</内容>

未声明的实体的引用是一个错误,除非已经定义了一个默认的实体。例如:

<!ENTITY DEFAULT "该实体未定义。">

其他标记结构和处理器选项可能会影响是否和如何处理实体。例如,一个处理器可以选择忽略外部实体。

参见

引用

外部链接