XML 知识量:7 - 28 - 99
XML文档可以从许多不同的数据源或文件中提取所需的数据和文本片段,这就需要一个载体将这些数据或文本片段装载到XML文档中,这个载体就称为实体。
XML文档通过实体名称来引用实体,当XML处理器或其他程序处理XML文档时,就可以用实体名称代表的具体内容替换XML文档中的实体名称,从而组成一个完整的XML文档。可以将实体名称理解为一个指向具体资源的标记,最终,该资源会在XML文档中替换掉标记,成为完整的XML文档,标记(实体名称)起到指向和占位的作用。
实体有3种分类方式。
1、根据实体引用的位置可以分为:通用实体和参数实体。
通用实体:只能用于XML文档中。
参数实体:只能用于DTD文档中。
2、根据实体与文档的关系可以分为:内部实体和外部实体。
内部实体:所代表的内容和实体声明在同一个文档中。
外部实体:所代表的内容在实体声明文档之外。
3、根据实体本身的内容可以分为:解析实体和未解析实体。
解析实体:其内容都是可解析的XML文本、字符和数据。
未解析实体:其内容是XML处理器不能直接解析的,例如图像、声音等。
通用实体可以分为:内部通用实体和外部通用实体。
内部通用实体的作用类似于编程语言中的宏替换,其语法为:
<!ENTITY 实体名称 "实体内容">
其中:
<!表示实体定义的开始,ENTITY是实体定义的关键字,且必须大写。<!与ENTITY之间不能有空格。
实体名称是自定义的实体的名称。
实体内容是要引用的具体内容。
引用内部通用实体的语法为:
&实体名称;
其中,“&”、“实体名称”和“;”之间都不能有空格。
下面的示例定义了一个内部通用实体:
<!ENTITY 测试结果 "合格">
在XML文档中引用实体:
<结果>&测试结果;</结果>
XML处理器解析后的结果为:
<结果>合格</结果>
外部通用实体是存在于XML文档之外的独立的XML文档片段,其语法为:
<!ENTITY 实体名称 SYSTEM "URL">
其中:
<!表示实体定义的开始,ENTITY是实体定义的关键字,且必须大写。<!与ENTITY之间不能有空格。
实体名称是自定义的实体的名称。
SYSTEM是定义外部通用实体的关键字,且必须大写。
URL是要引入的XML文件的路径。
下面的示例定义了一个外部通用实体:
<!ENTITY 测试结果 SYSTEM "合格.txt">
外部通用实体“测试结果”的内容来自合格.txt文件,引用外部通用实体的语法与引用内部通用实体的语法相同。
参数实体分为:内部参数实体和外部参数实体。
内部参数实体是指声明在DTD内部的参数实体,其语法为:
<!ENTITY % 实体名称 "实体内容">
其中:
<!表示实体定义的开始,ENTITY是实体定义的关键字,且必须大写。<!与ENTITY之间不能有空格。
%为定义参数实体的标记,不能省略,%与ENTITY之间有空格。
实体名称是自定义的实体的名称,与%之间有空格。
实体内容是要引用的具体内容。
在DTD文档中引用内部参数实体的语法为:
%实体名称;
其中,“%”、“实体名称”和“;”之间都不能有空格。
下面的示例定义了一个内部参数实体:
<!ENTITY % 学生信息 "(姓名,年龄)">
在DTD文档中引用实体:
<!ELEMENT 学生 %学生信息;>
引用后最终的DTD内容为:
<!ELEMENT 学生 (姓名,年龄)>
外部参数实体是存在于DTD文档之外的独立DTD文档片段,其语法为:
<!ENTITY % 实体名称 SYSTEM "URL">
其中:
<!表示实体定义的开始,ENTITY是实体定义的关键字,且必须大写。<!与ENTITY之间不能有空格。
%为定义参数实体的标记,不能省略,%与ENTITY之间有空格。
实体名称是自定义的实体的名称,与%之间有空格。
SYSTEM是定义外部参数实体的关键字,且必须大写。
URL是要引入的其他DTD文件的路径。
下面的示例定义了一个外部参数实体:
<!ENTITY % 学生信息 SYSTEM "学生信息.dtd">
外部参数实体“学生信息”的内容来自学生信息.dtd文件,引用外部参数实体的语法与引用内部参数实体的语法相同。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6