XML第三讲:XMLSpy详解、有效的XML文档解析

来源:互联网 发布:科目四软件下载 编辑:程序博客网 时间:2024/05/29 14:20

1. 文档类型定义和命名空间

1) 文档类型定义

   通过DTD来创建针对XML的规则。这种的XML文档就是有效的XML文档。

   有效的(valid)XML 文档。首先XML文档是个格式正规的XML文档,然后又需要满足DTD的要求,这样的XML文档称为有效的XML文档。

2) DTD声明

3) 元素声明

4) 属性声明

5) 实体声明

6) 命名空间

2. 什么是DTD、为什么要用DTD

DTD可以实现对这些规则的约定,我们写的XML文档就要符合这种规定,那么这个XML文档就是有效的XML文档。

1) DTD文档与XML文档实例的关系就好比如是类与对象的关系,类是抽象的,对象是具体的。DTD也是这样子的它规定了这个XML文档必须要有某个元素,这个元素必须要有某个属性,也是一种抽象的描述,当我生成一个具体的XML文档之后,这些元素和属性也就相应的会出现。

2)如何生成一个DTD文档

(1) 所谓内部DTD就是表示DTD的内容是和XML的内容放在一起的,同一个文件中的。

    所谓外部DTD就是表示DTD文档和XML文档时分开的,通过路径的方式使得XML文档能够引用到DTD。

    内外部DTD文档结合用的比较少。

(2) 现在我们来写一下内部DTD文档,以及它们如何使用校验

这次在XMLSpy软件上编辑,新建一个XML文档innerDTD.xml,如果对这个软件不是很熟悉的话,可以去网上找相关资料进行学习。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem [<!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)>]><poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content></poem>

在浏览器中运行,解析成功,这就是内部DTD实例

【注意】:再写DTD文档的时候,注意元素之间的空格。否则语法通不过。

【说明】:DTD中的元素的名称,顺序定义好之后,在写XML文档的时候必须按照这个名称,顺序写,而且也不能增加元素或减少元素,否则语法通过,但是逻辑上是不正确的。可以再XMLSpy上快捷键F7,与F8进行测试。

(3) 外部DTD,现在我们来练习一下外部DTD的使用方法


新建一个dtd.dtd

<?xml version="1.0" encoding="UTF-8"?><!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)>

新建一个xml.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem SYSTEM "dtd.dtd"><poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content></poem>

在浏览器中运行,解析正确

【说明】:注意其中<!DOCTYPE poem SYSTEM "dtd.dtd"> SYSTEM后面取的相对路径下的dtd文件,所以要将xml.xml与dtd.dtd放在同一级目录下.

【说明】:#PCDATA (Parsed Character Data),可解析的字符数据。简单来说就是字符串数据。

(4)内外部结合的DTD文档(这个用的比较少,稍作了解即可)


新建一个dtd_1.dtd

<?xml version="1.0" encoding="UTF-8"?><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)>
再新建一个xml_1.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem SYSTEM "dtd_1.dtd"[<!ELEMENT poem (author, title, content)><!ELEMENT content (#PCDATA)>]><poem><author>王维</author><title>鹿柴</title><content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content></poem>

在浏览器中运行,xml解析成功。哪些元素在里面,哪些元素在外面是没有关系,只要合并起来能够约束到xml文档就是可以的。

【注意】:外部的DTD有一个好处是可以复用,它可以验证这个文档,也可以验证另外一个文档,如果是内部的DTD,它只能验证当前的文档。



























原创粉丝点击