XML--DTD的介绍

前言

学习XML,就一定不能错过DTD,虽然有XML不一定需要DTD,但是有DTD的XML要比没有DTD的XML更加的标准化,,所以现在来让我们一起了解一下DTD。

内容

DTD是XML中的一种语法规则,全称为Document Type Definition(文档类型定义)在执行的时候需要符合该语法规则进行,为了正确交换数据,XML文件需要确定的结构:

eg.
定义了DTD结构的XML语句:我今天吃饭了(主谓宾)
没有定义DTD结构的XML语句:饭今天吃我了、今天饭我吃了、今天我吃了饭(没有特定的语法结构)
DTD就是为了防止这种语法的出现

DTD的内容

所以我们可以看出:

  • DTD定义XML文件的结构
  • DTD为XML文件提供语法与规则
  • DTD内容既可以定义在XML文件中,也可以定义在XML文件之外
  • DTD使用XML进行数据交换的行业或组织可定义自己的DTD
  • DTD对于XML是可选的内容
    DTD既可以内置到XML中,也可以在XML外部。
    DTD定义到内部:
<?xml version= "1.0" encoding = "utf-8"?>
<!DOCTYPE 书籍列表[
        <!ELEMENT 书籍列表(计算机书籍)*>
        <!ELEMENT 计算机书籍(书名,价格,简要介绍)>
        <!ELEMENT 书名(#PCDATA)>
        <!ELEMENT 价格(#PCDATA)>
        <!ELEMENT 简要介绍(#PCDATA)>
]>
----------显示的内容一定要按照上面给出的循序,否则出错-------------
<书籍列表>
    <计算机书籍>
        <书名>XML的今生今世</书名>
        <价格>66.66</价格>
        <简要介绍>该书详细描写XML从出生到衰老的整个过程</简要介绍>
    </计算机书籍>
</书籍列表>

DTD定义到外部:

-----------新建一个文件DTD文件book.dtd-------------
<?xml version= "1.0" encoding = "utf-8"?>
<!DOCTYPE 书籍列表[
        <!ELEMENT 书籍列表(计算机书籍)*>
        <!ELEMENT 计算机书籍(书名,价格,简要介绍)>
        <!ELEMENT 书名(#PCDATA)>
        <!ELEMENT 价格(#PCDATA)>
        <!ELEMENT 简要介绍(#PCDATA)>
]>

---------------使用外部DTD文件-----------------

<?xml version= "1.0" encoding = "utf-8"?>
<!DOCTYPE 书籍列表 SYSTEM "book.dtd">
...

从上面我们也可以看出来,meigeXML文档单独定义的DTD可推广位一个系统内共享的功用DTD,只需要用到关键字SYSTEM作为引用一个作者或组织所编写的总舵XML文档种通用的DTD
另外还有一种外部DTD,就是由权威机构制定的,提供给特定行业或公众使用的DTD。关键字是PUBLIC

DTD中的元素

DTD中的元素种类多种,现在介绍三种。

元素声明
<!ELEMENT 元素名称 类别> 或者<!ELEMENT 元素名称 (元素内容)>
    eg.
        <!ELEMENT 书名(#PCDATA)>
        <!ELEMENT 计算机书籍(书名,价格,简要介绍)>
空元素EMPTY
<!ELEMENT 元素名称 EMPTY>
    eg.
        DTD中:<!ELEMENT br EMPTY>
        XML中:<br/>
任何内容的元素
<!ELEMENT 元素名称 ANY>
    eg.
        DTD中:<!ELEMENT student ANY>
        XML中:<student>刘伟</student>
  <student><name>刘伟</name></student>

从上文中我们可以看到

<!ELEMENT 书籍列表(计算机书籍)*>

所以简单介绍(计算机书籍)*的意思,这句含义表示计算机书籍可以出现零次或多次,下面是针对字符的含义做出的介绍:

字符含义
+出现一次或多次
*出现零次或多次
可选,不出现或出现一次
()一组要共同匹配的表达式
或(OR)
'并(AND),要求严格遵从顺序要求

DTD的属性

在DTD中,属性通过ATTLIST来进行声明

<!ATTLIST 元素名称 属性名称 属性类型 默认值>
    eg.
        ------------DTD文件中----------------
        <!ATTLIST payment type CDATA "cash" >
        ------------XML中引用----------------
        <payment type = "cash" />

DTD中的类型有:

类型描述
CDATA职位字符数据(character data)
(en1丨en2丨..)此值是枚举列表中的一个值
ID值为唯一的id
IDREF值为另外一个元素的id
IDREFS值为其他id的列表
NMTOKEN值为合法的XML名称
NMTOKENS值为合法的XML名称的列表
ENTITY值为一个实体
ENTITIES值为一个实体列表
NOTATION此值时符号的名称
xml:值是一个预定义的XML值
#REQUIRED属性值是必须的
#IMPLIED属性值不是必须的
#FIXED value属性值是固定的
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值