使用DTD对XML文件进行检验

来源:互联网 发布:电信提速软件 编辑:程序博客网 时间:2024/06/06 12:23

本节学习目标:

1.xml的相关概念

2.什么是良好的xml,什么是有效的xml

3.什么是DTD

4.DTD的相关语法

5.使用DTD对xml文件进行检验


1.什么是XML

--XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言)

XML用途:配置文件 数据交换


2.什么是格式良好
   2.1 有且只有一个根元素
  2.2 XML标签大小写正确区分
  2.3 正确使用结束标签
  2.4 正确嵌套标签
  2.5 使用了合法的标签名    
标签名必须以字母、下划线开始,然后是字母、数字、句号(.)、冒号(:)、下划线(_)、连字符(-)的组合,但不能包括空格。(注意:不提倡使用句号、冒号作为标签名的一部分,容易混淆)
  2.6 定义有效的属性

<?xml version="1.0"?>
<student>
zs
</student>


2.2 有效的XML文档必须满足以下两点:
2.1.1.首先必须是格式良好的XML文档
2.2.2.通过了DTD验证


3.什么是DTD

文档类型定义(Document Type Definition)也就是DTD,它一种保证XML文档格式正确的有效方法,可通过比较文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确


4.DOCTYPE声明

DOCTYPE声明紧跟在XML声明的后面,它可以包含其它声明,DOCTYPE声明语法如下:
<!DOCTYPE rootElement […]>

4.1元素定义的语法
<!ELEMENT element-name (type)>


5.元素的分类

5.1空元素
<!ELEMENT  element-name  EMPTY>
例如:<br/>


5.2字符元素
<!ELEMENT  element-name  (#PCDATA)>
例如:<name>zs</name>


5.3混合元素:也就是包含其它元素的元素contact
<!ELEMENT  contact   ( phone | email )>
例如:<contact><phone>1688888888</phone></contact>


6.混合元素的子元素限制

6.1带有固定顺序的子元素的元素
<!ELEMENT element-name(child-element-name,childe-element-name, …)>


6.2带有子元素列表的元素(或)
<!ELEMENT element-name(child-element-name|childe-element-name| …)>


6.3子元素出现的次数(1和0)
<!ELEMENT element-name(child1+,child2*,child3?,child4)>


元素的限制:
“+”号表示至少出现一次或多次
“*”号表示至少出现0次或多数
“?”号表示出现0次或1次
没有修饰符即为1次


7.属性声明

在DTD中,使用属性声明来声明XML元素的属性。元素的属性声明语法如下:
<!ATTLIST element-name attribute-name type constraint>

-------------------------------------------------------------------------------

<!ATTLIST person
pid ID #REQUIRED
sex (男|女) "男"
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>

-----------------------------------------------------------------------------------------------------


7.1属性常用类型

属性类型

类型说明

CDATA

qq CDATA #IMPLIED

普通字符类型(类似于数据库中字符串)

枚举类型

sex (男|女) "男"

希望属性值为一组固定合法值的一个时(类似于数据库中检查约束)

ID

pid ID #REQUIRED

标识符类型,此值在文档中是唯一的。(类似于数据库的主键,注意ID属性的值必须以英文字母开头)

IDREF

parent IDREF #IMPLIED

也是标识符类型,将另一个元素ID作为值(类似于数据库的外键)


-----------------------------------------------------------------------------------------------------------------------------------------------------------


7.2 属性的约束

约束名

说明

default

sex (|""

为属性指定一个默认值

#IMPLIED

qq CDATA #IMPLIED

允许属性值为空

#REQUIRED

pid ID #REQUIRED

必填属性



以下是XML中需要的转义字
&(逻辑与)  &amp;        
<(小于)    &lt;        
>(大于)    &gt;        
"(双引号)  &quot;      
'(单引号)  &apos; [/size]


总节:

DTD是一种保证XML文档格式正确的有效方法
DTD中元素分为
空元素
字符元素
混合元素
顺序(,)
或(|)
次数:+,*,?,没有限制符-即次数1


DTD中常用属性定义
属性类型定义
CDATA
枚举
ID
IDREF


属性限制定义
默认值
允许空
非空

一个格式良好,且通过DTD验证的XML文件才能叫有效的XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE students[
<!ELEMENT students (class+,student*)>
<!ELEMENT student (name,age,(qq|email),br)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT qq (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT class EMPTY>

<!-- 约束 -->
<!ATTLIST class
cid ID #REQUIRED 
>
<!ATTLIST student
sid ID #REQUIRED
cid IDREF #REQUIRED
sex (男|女) "男"
>

]>
<students>
<class cid="G160818"/>
<student sid="P1" cid="G160818" sex="男">
<name>zs</name>
<age>20</age>
<qq>1227802068</qq>
<br/>
</student>
<student sid="p2" cid="G160818">
<name>ls</name>
<age>22</age>
<email>1227802068@qq.com</email>
<br/>
</student>
<student sid="p3" cid="G160818">
<name>ww</name>
<age>23</age>
<qq>1227802069</qq>
<br/>
</student>
</students>


---------------------------------------微笑敬请期待下一节哦!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 身份证收据丢了怎么办 违章罚单丢了怎么办 村里的房子怎么办房产证 驾驶员没有从业资格证怎么办 滴滴驾驶员从业资格证怎么办 驾驶员证丢了怎么办 车检过期两个月怎么办 车子一年未年检怎么办 银行年检过期了怎么办 个体工商年报过期怎么办 个体工商执照过期怎么办 决定书编号16位怎么办 挂招牌遇到城管怎么办 结业证书丢了怎么办 违章满12分怎么办 摩托车分扣完了怎么办 驾校故意卡学员怎么办 新疆网上办税怎么办? 科三考4次不过怎么办 科三挂了4次怎么办 征信进入黑名单怎么办 年检换标过期怎么办 滴滴叫不到车怎么办 学时卡丢了怎么办 驾校学员丢了怎么办 考驾照学时不够怎么办 车辆年审超时间怎么办 车辆过年检了怎么办 开公司货车违章怎么办 毕业证丢了怎么办居住证 贴吧回帖被秒删怎么办 群拉人失败了怎么办 安装解释包错误怎么办 皮皮麻将进不去怎么办 郑州集体户口怎么办准生证 广州集体户口准生证怎么办 学校寄档案丢失怎么办 深圳通儿童卡怎么办 集体户没有户口卡怎么办 北京滴滴跑长途怎么办 应届毕业生落户成都档案怎么办