预定义实体
XML为显示非ASCII码字符集中的字符提供了两种方法:
字符引用和实体引用。
字符引用是一个字符文字形式的替代品。字符引用用来表示一个可显示的字符,它由十进制或十六进制的数字前面加上“&#”或“&#x”,后面紧跟分号“;”组成。
例如,“©”或“©”(在浏览器中)会被显示为“©”,而“®”或“®”会被显示为“®”。
实体引用
实体引用是一种合法的XML名字,前面带有一个符号“&”,后面跟着一个分号“;”,格式如“&name;”。
通用实体引用
除了上述五个实体,所有实体都必须在文档使用前予以定义。称为通用实体引用。这类实体声明包含关键字ENTITY、实体名称和替换值。定义通用实体的语法格式为:
<!ENTITY 实体名 “实体内容”>
例子:
<?xml version="1.0" encoding="gb2312"?>
<!--文件名:例5-1.xml-->
<!DOCTYPE 图书信息表 [
<!ELEMENT 图书信息表 (图书+)>
<!ELEMENT 图书 (书名,类别,作者,出版社)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 类别 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 出版社 (#PCDATA)>
<!ENTITY lb "计算机">
<!ENTITY cbs "出版社">
]>
<图书信息表>
<图书>
<书名>XML技术应用</书名>
<类别>&lb;</类别>
<作者>贾素玲</作者>
<出版社>清华大学&cbs;</出版社>
</图书>
<图书>
<书名>计算机网络教程</书名>
<类别>&lb;</类别>
<作者>谢希仁</作者>
<出版社>人民邮电&cbs;</出版社>
</图书>
</图书信息表>
CDATA节
CDATA标记的作用是通知XML语法解析器,该标记中的代码包括文字和标记都要当作纯文本来解析,并原封不动的将这段代码传给下一个XML应用程序。 CDATA的形式如下:<![CDATA[ …… ]]>
以<![CDATA[开始,并以]]> 结束。
因为符号“>”、“<”、“&”等是被当作标记的特定部分处理的,所以把这些符号包含在CDATA节中,所有的内容都被当作纯字符数据对待。
例子:
<?xml version="1.0" encoding="gb2312"?>
<代码>
<!--这是一段C++代码-->
<![CDATA[
while(p&&j<i)
{
p=p->next;
++j;
}
]]>
</代码>
格式良好与有效的XML文档
凡是“格式良好的”XML文档都可以被XML解析器解析,进而生成对象树,以便接受进一步的处理。“格式良好的”是对XML文档最基本的要求。
编写“格式良好的” XML文档,必须遵守的基本规则:
(1) 文档的开始必须是XML声明。
(2) 含有数据的元素必须有起始标记和结束标记。
(3) 不含数据并且仅使用一个标记的元素必须以“/>”结束。
(4) 文档只能包含一个能够包含全部其他元素的元素,即根元素。
(5) 元素只能嵌套不能重叠。
(6) 属性值必须加引号。
(7) 字符“<”和“&”只能用于起始标记和实体引用。
(8) 文档中正确地使用实体引用。
效的XML文档
“有效的”XML必定是“格式良好的”,在此基础上,还要遵守DTD或XML Schema的语法规定。