XML知识点滴(9)
(引用文章,版权归作者,如需删除请联系我)
记号声明
n 在现实中,有许多数据都无法用XML来表示的,例如:声音、图像、影像等,对于这些数据,XML处理器通常不支持。
n 通过DTD中的记号申明(notation declaration),为非 XML数据描述一种可能的格式,或者指定一个外部的程序。
n 记号声明有两种形式,一种是使用MIME类型,形式如下:
<!NOTATION gif SYSTEM “image/gif”>
另一种是使用URI路径,指出外部处理程序的位置,如下:
<!NOTATION gif SYSTEM “iexplore.exe”>
n 对于记号的声明,也可以使用PUBLIC关键字来代替SYSTEM关键字,并添加公共的名称和URI(用法类似于使用了关键字PUBLIC的外部DTD声明)。
有效的XML
n 一个遵守XML语法规则,并遵守相应DTD文件约束的XML文档称为有效的XML文档。
n 注意区分格式良好的XML和有效的XML,一个只要求遵循XML规范,一个不但要遵循XML规范,还要遵循相应的DTD约束。
n 将XML文档和它的DTD文件进行比较分析,看是否符合DTD规则的过程叫验证(validation),这个过程通常是通过一个支持有效性检查的XML处理器来完成的。
XML处理器/解释器
n 合乎规范的XML处理器可以分为两类:进行验证和不进行验证的。
n 不支持有效性检查的处理器
这一类处理器只负责检查XML文档和它内部的DTD子集是否满足“格式良好的”语法规定。这类处理器不会对XML文档所引用的外部DTD文档进行分析、进而检查XML文档的有效性,但对于出现在文档内部的DTD子集,仍旧需要处理在内部DTD子集和参数实体中读到的所有声明,直到发现第一个对它们没有读取到的参数实体引用。也就是说,这类处理器必须使用DTD声明中的信息来规范属性的值,包含内部实体的替换文本,以及提供缺省的属性值。
n 支持有效性检查的处理器
这一类处理器在检查文档是否符合“格式良好的”基本要求的基础上,进一步结合DTD检查文档是否符合DTD中对文档结构的规定,判定这个文档是否是“有效的”。处理器必须读取和处理整个DTD和文档中引用的所有外部已分析实体。并报告出文档与DTD声明相冲突的地方,以及不满足DTD有效性约束的地方。
无论是哪一类处理器,都要报告文档实体的内容中和其它读取到的已分析实体中与XML标准的“格式良好的”文档定义相冲突的地方。
支持对XML文档进行有效性检查的XML处理器有:
1) Apache的Xercess
Xerces是Apache的XML项目的一部分,它分别使用Jave、C++和Perl编写了XML的处理器,支持有效性检查。Xerces是一个开放源代码的XML处理器,有关该处理器的详细介绍请参看网页:
http://xml.apache.org/xercess-j/index.html。
2) Oracle XML Parser
Oracle XML Parser是在Oracle XDK(XML Developers Kit)中提供的。XDK是Oracle公司提供的基于XML的工具包,可以用于Jave、C++和PL/SQL。Oracle XDK一个商业化软件,并非开源代码产品。Oracle公司发布了只用于开发的许可证,允许 你将此软件用于开发的目的。可以从下面的网页查看XDK的信息:http://www.oracle.com/technology/tech/xml/xdkhome.html
n XML处理器位于XML数据与使用XML数据的应用程序之间,它通过标准的API来向应用程序提供数据。