DTD基础

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值