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

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,它只能验证当前的文档。



























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值