xml的dtd约束

一.xml约束的简介

Xml约束就是书写xml的要求、规则、束缚,在写xml文件之前先定义好的一套规则,然后在xml文件中引用这套规则,那么该xml文件的书写必须满足规则。

xml约束的常用约束有:dtd约束、schema约束

下面简单说一下dtd约束的定义和使用

注意:下面所以的标签和元素都是指同一个东西,就是xml文件中自定义的标签

二.dtd约束文件的定义

1)dtd约束简介

DTD(Document Type Definition),全称为文档类型定义。dtd约束的文件有其自己独特的语法结构:

2)自定义dtd约束文件

下面是自定义的一个dtd约束文件,dtd约束文件的后缀名是.dtd(下面dtd文件名是:my.dtd)

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT wh0320 (student+,teacher+)>
<!ELEMENT student (name,age,gender)>
<!ELEMENT teacher (name,age,gender)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT gender (#PCDATA)>

<!--
    ATTLIST 表示属性列表 
        student 当前属性写在哪个标签上
        id表示属性名称,可以任意命名,注意命名规范
        ID表示属性的类型
        #REQUIRED表示必填 属性如果是ID类型就必须设置为必填
-->
<!ATTLIST student id ID #REQUIRED>

<?xml version="1.0" encoding="uft-8"?> 第一行是文档声明,version是xml文件的版本信息,encoding是xml文件的字符编码

<!ELEMENT wh0320 (student+,teacher+)> 表示在wh0320标签下面可以有1到多个student和teacher子标签,注意()之前有个空格

<!ELEMENT student (name,age,gender)> 表示在student这个标签下面还有name,age,gender这个三个子标签,默认只出现一次

<!ELEMENT name (#PCDATA)> 表示在name标签中可以输入文本内容

<!ATTLIST student id ID #REQUIRED> 表示在student标签下面有一个属性名为id的属性,值的类型是ID,#REQUIRED表示这个属性对student标签来说是必写的属性

3)dtd约束的语法介绍【定义元素和属性】

①声明xml元素的语法:

<!ELEMENT 元素名称 (子标签名称.....) >   表示在xml文件中这个标签下面有些子标签

或者<!ELEMENT 元素名称 (#PCDATA)>   表示在xml文件中这个标签下面没有子标签,直接在该标签里面填写文本

注意:上面的语法中元素名称和()之间必须要有一个空格,如果没有约束无效

在子标签后面也可以使用下面符号:

*:表示该子标签可以自这个标签中出现0次或多次

+:表示该子标签可以在这个标签中出现一次或多次

:表示该字标签可以在这个标签中出现0次或一次

注意:标签名后面没有这些符号默认出现一次

②声明元素属性的语法:

<!ATTLIST 元素名称 属性名1 属性类型 设置说明 ....>  表示在指定的元素中设置属性,可以在在一个标签中设置多个属性

设置说明:
#REQUIRED:必须设置该属性
#IMPLIED:属性不是必需的,可以设置也可以不设置

#FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值 
直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。

常用属性值类型

CDATA:表示属性值为普通文本字符串。
ID:值为唯一的 id
ENTITY(实体):值是一个实体

三.dtd约束的使用

dtd约束定义好了以后,可以在xml文件中引用这个dtd约束文件,引用以后,xml文件的标签的定义必须和dtd约束的规则一致

下面是自定义的xml文件中,引用dtd文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wh0320 SYSTEM "my.dtd">
<wh0320>
    <student id="stu_01">
        <name>赵敏</name>
        <age>23</age>
        <gender></gender>
    </student>
    <teacher>
        <name>张三丰</name>
        <age>110</age>
        <gender></gender>
    </teacher>
</wh0320>

引用外部dtd文件的声明语法:<!DOCTYPE 根元素 SYSTEM "文件路径">

注意:①引入文件的声明语句必须在xml文档声明的语句下面

           ②后面的文件路径,如果dtd约束文件和xml文件在同一个文件夹下,可以不写路径直接使用文件名

posted on 2019-05-10 16:52  qiaoqiaoli  阅读(196)  评论(0编辑  收藏  举报

导航