0
点赞
收藏
分享

微信扫一扫

JavaWeb之DTD约束

晒大太阳了 2022-03-22 阅读 46
springxml

一、DTD约束

1、解释

1.1 什么是约束?

在xml文档中,可以通过一个文件来约束xml文档中的内容规范,这个规范就是约束。
约束就是规定了xml文件中可以写什么,不可以写什么。

1.2 为什么要有约束?

因为xml文件可以随意写,如果标记随意写,在解析xml文件时,程序员就不清楚xml文件中的标记具体表示什么含义,所以说用约束规范xml文件的书写。

2、创建约束文件

2.1 什么是DTD:

文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可以作为一个外部引用。

2.2 语法

<!ELEMENT 元素名称 [dtd具体约束内容]>
比如:
   <!ELEMENT 书架 (书+)>
   <!ELEMENT 书   (书名,作者,价格)>
   <!ELEMENT 书名 (#PCDATA)>
   <!ELEMENT 作者  |(#PCDATA)>
   <!ELEMENT 价格 (#PCDATA)>

3、DTD引入

3.1 直接在xml文件中引入DTD约束

  <!DOCTYPE 书架[
      <!ELEMENT 书架 (书+)>
       <!ELEMENT 书   (书名,作者,价格)>
       <!ELEMENT 书名 (#PCDATA)>
       <!ELEMENT 作者  |(#PCDATA)>
       <!ELEMENT 价格 (#PCDATA)>
  ]>

3.2 外部引入方式

(1)本地引入

    语法:<!DOCTYPE 书架 SYSTEM "xxx.dtd">

(2)公网引入

    语法:<!DOCTYPE 书架 PUBLIC "DTD名称" "DTD文件在公网的url">

4、DTD语法

4.1 元素定义

(1)基本语法

    <!ELEMENT 元素名称 元素内容>

(2)元素内容对应的类型

    普通的文本:#PCDATA
    子元素:比如说:(子元素1,子元素2,等等)
    EMPTY:比如说:<book />
    ANY:代表任意内容,元素内容可以是普通的文本,也可以是子元素。
    注意:
    * 表示零个或者多个
    + 表示一个或者多个
    | 表示任选一个
    ,表示子元素按顺序排列
    ?表示可以出现0或1

4.2 属性定义

(1)基本语法

    <!ATTLIST 元素名称 属性名称 属性类型 默认值>

(2)属性类型

    CDATA:属性值为任意文本数据
           即Character Data(字符数据)。表示属性的类型为字符类型!

    Enumerated:属性值必须是枚举列表中的一个:
        它不是关键字,定义枚举类型的属性需要给出枚举列表。当属性值为枚举类型时,
        那么这个属性的取值必须是枚举列表中的一个值。

    ID:属性值必须是唯一的,并且属性值不能以数字开头
        一个元素只能有一个ID属性,ID属性用来表示元素唯一性的唯一标识。ID属性就相当于元素的身份证号,必须是唯一标识!

    IDREF:属性值必须是ID属性的值
        IDREF 属性用来与其他元素建立关联关系,
        IDREF 属性的值必须是另一个元素的ID属性值。

(3)属性类型的设置说明

    #REQUIRED:表示属性是必须的。
    #IMPLIED:表示属性是可选的,即这个属性可以不给出;
举报

相关推荐

0 条评论