• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

清单8-1 显示了这一文档,但这次带有文档类型声明。文档类型声明声明了基本元素是GREETING。文档类型声明也包含文
档类型定义,它声明了GREETING 元素包含可析的字符数据。
清单8-1:带有DTD 的Hello XML
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE GREETING [
<!ELEMENT GREETING (#PCDATA)>
]>
<GREETING>
Hello XML!
</GREETING>
清单3-2 与清单8-1 的唯一区别在于清单8-1 增加了3 行:
<!DOCTYPE GREETING [
<!ELEMENT GREETING (#PCDATA)>
XML 实用大全
第 182 页
]>
这几行是清单8-1 的文档类型声明。文档类型声明在XML 声明与文档本身之间。XML 声明与文档类型声明统称为文档序言
(Prolog)。在本例中,<?xml version="1.0" standalone="yes"?>是XML 声明;<!DOCTYPE GREETING [ <!ELEMENT GREETING
(#PCDATA)> ]>是文档类型声明;<!ELEMENT GREETING (#PCDATA)>是文档类型定义;<GREETING> Hello XML! </GREETING>
是文档或基本元素。
文档类型声明以<!DOCTYPE 为开始,以]>结束。通常将开始和结束放在不同的行上,但断行和多余的空格并不重要。同一文
档类型声明也可以写成一行:
<!DOCTYPE GREETING [<!ELEMENT GREETING (#PCDATA)> ]>
本例中基本元素名称——GREETING 跟在<!DOCTYPE 之后。这不仅是一个名称,也是一项要求。任何带有这种文档类型声明的
合法文档必须有基本元素。在[和]之间的内容是文档类型定义。
DTD 由一系列声明了特写的元素、实体和属性的标记声明所组成。其中的一项声明基本元素。清单8-1 中整个DTD 只是如下
简单的一行:
<!ELEMENT GREETING (#PCDATA)>
通常情况下DTD 当然会更长更复杂。
单个行<!ELEMENT GREETING (#PCDATA)>(正如XML 中的大多数对象一样是区分大小写的)是一项元素类型声明。在本例中,
声明的元素名称是GREETING。它是唯一的元素。这一元素可以包含可析的字符数据(或#PCDATA)。可析的字符实质上是除
标记文本外的任何文本。这也包括实体引用如&amp;,在对文档进行语法分析时,实体引用就被文本所取代。
可以把这一文档像通常一样装入一种XML 浏览器中。图8-1 显示了清单8-1 在Internet Explorer 5.0 中的情况。结果可能
正如人们所料,文档源以可折叠的大纲视图出现。Internet Explorer 使<!DOCTYPE GREETING ( View Source for full
doctype…)>一行变蓝指明有文档类型声明。
图8-1 Internet Explorer 5.0 中显示的带有DTD 的Hello XML
当然,文档可以与样式单结合起来,就像第3 章的清单3-6 中一样。实际上可以用同一个样式单。如清单8-2 所示,只要在
序言中增加通常的<?xml-stylesheet?>处理指令。
清单8-2:带有DTD 和样式单的Hello XML
<?xml version="1.0" standalone="yes"?>
XML 实用大全
第 183 页
<?xml-stylesheet type="text/css" href="greeting.css"?>
<!DOCTYPE GREETING [
<!ELEMENT GREETING (#PCDATA)>
]>
<GREETING>
Hello XML!
</GREETING>
图8-2 显示的是结果网页。这同第3 章中没有DTD 的图3-3 相同。格式化时通常不考虑DTD。
图8-2 Internet Explorer 5.0 所示的带DTD 和样式单的Hello XML
XML 实用大全
第 184 页
8.3 根据DTD 的合法性检验
一个合法的文档必须符合DTD 指定的约束条件。而且,它的基本元素必须是在文档类型声明中指明的。清单8-1 中的文档类
型声明和DTD 说明一个合法的文档必须是这样的:
<GREETING>
various random text but no markup
</GREETING>
一个合法的文档不能是这样的:
<GREETING>
<sometag>various random text</sometag>
<someEmptyTag/>
</GREETING>
也不能是这样的:
<GREETING>
<GREETING>various random text</GREETING>
</GREETING>
这个文档必须由放在<GREETING>开始标记和<1GREETING>结束标记之间的可析的字符所组成。与只是结构完整的文档不同,
合法文档不允许使用任意的标记。使用的任何标记都要在DTD 内声明。而且,必须以DTD 允许的方式使用。在清单8-1 中,
<GREETING>标记只能用作基本元素的开始,且不能嵌套使用。
假设我们对清单8-2 做一点变动,以<foo>和</foo>替换<GREETING>和</GREETING>标记,如清单8-3 所示。清单8-3 是合法
的。它是一个结构完整的XML 文档,但它不符合文档类型声明和DTD 中的约束条件。
清单8-3:不符合DTD 规则的不合法的Hello XML
<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/css" href="greeting.css"?>
<!DOCTYPE GREETING [
<!ELEMENT GREETING (#PCDATA)>
]>
XML 实用大全
第 185 页
<foo>
Hello XML!
</foo>
不是所有的文档都必须合法,也不是所有的语法分析程序都检查文档的合法性。事实上,多数Web 浏览器包括IE
5和Mozilla 都不检查文档的合法性。
进行合法性检查的语法分析程序读取DTD 并检查文档是否合乎DTD 指定的规则。如果是,则分析程序将数据传送到XML 应用
程序(如Web 浏览器和数据库)。如果分析程序发现错误,它将报告出错。如果手工编写XML,应在张贴前检查文档的合法
性以确保读者不会遇到错误。
在Web 上可找到几十种不同的进行合法性检查的语法分析程序。其中多数是免费的。大多数是以库文件的形式存在的接近完
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(58)