欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

xml之DTD约束

程序员文章站 2022-05-30 13:15:57
...

一、什么是DTD约束

DTD(Document Type Definition):定义xml文件的结构,为xml文件提供语法与规则。内容既可以定义在xml文件中,也可以定义在xml文件之外。使用xml进行数据交换的行业或组织可以定义自己的DTD。DTD对于xml是可选的内容。

二、为什么要使用DTD

为了正确交换数据,xml文件需要确定的结构。

三、DTD约束的使用

以下是一个xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE store SYSTEM "store.dtd">    本地引用

<!DOCTYPE store PUBLIC "//UNKNOWN/" "unknown.dtd"> 互联网引用

<store> <product category="手机数码"> <pid>100</pid> <pname>OPPO手机</pname> <price>2500</price> </product> <product category="电脑办公"> <pid>1000</pid> <pname>联想笔记本</pname> <price>3500</price> </product> <product category="大型家电"> <pid>600</pid> <pname>全自动洗衣机</pname> <price>6500</price> </product> </store>
以下是约束它的DTD文件:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT store (product+)>
<!ELEMENT product (pid,pname,price)>
<!ELEMENT pid (#PCDATA)>    代表普通文本
<!ELEMENT pname (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST product category CDATA #REQUIRED>  必须写属性


我们来分析一下上述DTD文件:

(1)使用ELEMENT描述一个元素

<!ELEMENT store (product+)>
子标签出现的次数:

   +:一次或多次   最少一个

   ?:0次或1次

   * :0次或多次

(2)子标签出现的顺序:

<!ELEMENT product (pid,pname,price)>   子标签有顺序,使用逗号隔开
另一种情况:

<!ELEMENT product(name|price),price>   竖线代表或者

(3)属性

<!ATTLIST product category CDATA #REQUIRED>


格式:

ATTLIST 属性所属的标签 属性名称 属性值的类型 属性是否必须写

属性值的类型:CDATA:文本类型;

属性是否必须:必须:#REQUIRED   不必须:#IMPLED

四、总结:

上文讲述了什么是DTD约束,为什么要使用DTD约束,以及DTD约束的一个实际应用的小例子。大千世界,没有规矩不成方圆,xml中的标签可以自定义,但是这种自定义是需要在一种规则的约束下才能更好的发挥它的作用。