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 属性值是固定的

猜你喜欢

转载自blog.csdn.net/luojun13class/article/details/80894198