DTD基础

来源:互联网 发布:foobar2000 for mac 编辑:程序博客网 时间:2024/05/27 00:52

DTD定义:Document Type Definition,全称为文档类型定义。

 

DTD的引用:XML文件使用 DOCTYPE 声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句有两种形式:   

(1)外部引入

可以将dtd的约束内容写在外置的dtd文件中,这个文件后缀必须为.dtd而文件保存时必须用utf-8编码保存,再在xml文件中使用

<!DOCTYPE 根元素名称  SYSTEM文件的位置>

如果写的是SYSTEM表明当前引入的dtd在当前文件系统中,后面制定的文件位置是当前硬盘中的位置

<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

如果写的是PUBLIC表明当前引入的dtd在网络公共位置中,后面要指明dtd的名字和dtd所在网络位置URL地址

(2)内部引入

直接在xml中书写dtd

<!DOCTYPE 根元素名称[

dtd约束....

]>

 

DTD语法:

         1.元素约束:

<!ELEMENT元素名称元素约束>

            存放类型约束:      ANY/EMPTY

                元素内容约束:

子元素的列表,将可以包含的子元素用小括号括起来

如:<!ELEMENT书架 (书名,作者,售价)>

子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现

子元素之间可以使用竖线进行分割,表面子元素出现其中之一

#PCDATA 表明包含标签体

如:<!ELEMENT书名 (#PCDATA)>

 

                            + 表示一次或多次

                            * 表示0次或多次

                            ? 表示0次或一次

 

                            也可以使用小括号进行组的操作

         2.属性约束:

                   <!ATTLIST 元素名

                            属性名 属性类型 属性约束

                            属性名2 属性类型 属性约束

                            ......

                  >

                  

 

属性约束:

#REQUIRED  ---    表明当前属性是一个必须存在的属性,如果这样的属性不存在则在校验时会报错

#IMPLIED --- 表明当前属性是一个可选的属性,可以有也可以没有

#FIXED('固定值')--- 表明当前属性具有一个固定值,这样的属性不需要进行赋值,自动就会取这个固定值为值.如果这样的属性指定了一个不是固定值的值则校验报错

' 默认值' ---  表明当前属性具有一个默认值,如果给了其他的值就用其他值,如果没有给值则取这个默认值

                   属性类型:

                            CDATA:表示属性的值是一个普通字符串

ENUMERATED: 属性的值是一个枚举列表中的值

ID: 表明属性的值必须在整个文档中都是唯一的,如果有重复的id则校验不通过,ID 属性的值只能由字母,下划线开始,不能使用数字,不能出现空白字符

         3.ENTITY(实体)

<!ENTITY >,就是对一大段内容的引用,可以简化代码的复用

                   引用实体:在xml中引用的实体叫做引用实体

                            <!ENTITY 实体名称 “实体内容” >

使用方式:&实体名称;

参数实体:在dtd中引用的实体叫做参数实体

<!ENTITY  % 实体名称 "实体内容">

使用方式:%实体名称;

例:<!ENTITY  %  TAG_NAMES "姓名 | EMAIL | 电话 | 地址">

        

    <!ELEMENT 个人信息 (%TAG_NAMES; | 生日)>

<!ELEMENT 客户信息 (%TAG_NAMES; | 公司名)>

0 0
原创粉丝点击