XML - DTD约束

XML - DTD约束


DTD( Document Type Defination )是常见的xml的约束方式!

  • DTD是XML的一部分,是文档的验证机制
  • DTD是一种保证XML文档正确的有效方法
  • DTD使XML文件能成为数据交换标准

DTD的一般结构

<!DOCTYPE 根元素名
[
  <!ELEMENT 根元素名 (子元素列表)>
  <!ELEMENT 子元素名称 元素类型>
  <!ENTITY 名称 “内容">
  <!ATTLIST 元素名称 属性名称 属性类型 属性默认值>
  ....
]
>

示例

<!DOCTYPE menus
[
  <!ELEMENT menus (menu+)>
  <!ELEMENT menu (name,address,introduce)>
  <!ELEMENT name (#PCDATA)>
  <!ATTLIST name 
     englishName ID #REQUIRED>
  <!ELEMENT address (#PCDATA)>
  <!ELEMENT introduce (#PCDATA)>

]
>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE menus SYSTEM "TestDTD.dtd">
<menus>
   <menu>
     <name englishName="HP">惠普</name>
     <address>USA </address>
     <introduce>惠普是世界上最大科技企业之一
     </introduce>
   </menu>
</menus>

DTD的元素声明

  • EMPTY类型 (既不包含数据内容也不包含子元素)
    <!ELEMENT 元素名称 EMPTY>
  • #PCDATA类型 (不包含子元素,只包含字符数据)
    <!ELEMENT 元素名称 (#PCDATA)>
  • 子元素类型
    <!ELEMENT 元素名 (子元素名称)>

    在子元素类型中,可以使用正则表达式来规定子元素出现的次序和次数。

  • ANY类型 (内容可以是元素 PCDATA 或者元素与PCDATA的混合内容)
    <!ELEMENT 元素名称 ANY>
  • 混合类型
    <!ELEMENT 元素名称 (#PCDATA|子元素)*>

DTD属性声明

在DTD中,属性的主要作用是描述元素的额外信息,是对于元素的补充和修饰。属性在DTD中,通过ATTLIST关键字进行声明

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

    • #REQUIRED 元素实例中必须包含该属性
    • #IMPLIED 可选的,元素实例可以包含该属性,也可以不包含该属性
    • #FIXRD+默认值 属性值固定,该属性不能被其他值替代。如果不包含该属性,则解析器会把默认值设为属性值
    • 默认值 属性值可以设置为任意值,当不包含该属性时,解析器会把该默认值作为属性值
  • 属性的类型

    • CDATA,注意区别元素类型PCDATA,这里只纯文本,可以是任意字符串,但是不能包含<,&,”等字符串。
    • Enumerted(枚举类型),属性被描述一组可接受的取值列表。不过关键字并不出现在DTD定义中。
      <!ATTLIST name englishName (HP|Baidu) "HP">
    • ID类型。ID是用属性值的方式为文件中的某个元素定义唯一标识的方法!
    • IDREF 和IDREFS
    • NMTOKEN 和 UMTOKENS

DTD中实体

  • 通用实体
    • 内部通用实体
    • 外部通用实体
  • 参数实体
    • 内部参数实体
    • 外部参数实体

DTD的引用

  • 内部DTD引用
  • 外部DTD引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值