DTD(文档类型定义)

        首先说明的是文档类型定义(Document Type Definition)与文档类型声明(Document Type Declaration)是不同的,而且在缩写的时候只有文档类型定义的缩写为DTD;文档类型声明指定了使用DTD,而DTD描述了XML的文档结构。

         文档类型声明出现在文档的序言部分,处在XML声明之后,元素实例之前,并且一个XML文档只能有一个文档类型的声明。文档类型声明是以<!DOCTYPE  开始,以>结束。文档类型声明包括DTD或DTD所在文档的URL。文档类型声明包含或者引用DTD,但DTD不包括文档类型声明。

文档类型声明分为3种形式:1,内部的DTD声明;2,外部的DTD声明;3,内部DTD与外部DTD结合的声明。

 

DTD的用途:XML可以用DTD来验证自身数据的有效性。

 

一个DTD文档主要包含:1,元素(ELEMENT)的定义规则;2,元素间关系的定义规则;3,元素可使用的实体(ENTITY)或注记(NOTATION)规则;4,元素可使用的属性(ATTLIST);5,属性 的定义规则;

元素声明的格式为: <!ELEMENT  元素名 元素内容模式>

元素内容模式:1,EMPTY:用于定义空元素,所声明的元素只可能有属性而不会有字符数据或子元素。

                         <!ELEMENT  元素名 EMPTY>

                     2,ANY:可以包含DTD中定义的其他任何元素或已编译的字符数据,可以使PCDATA、元素或元素和PCDATA的混合内容,也可以是空元素。

                           <!ELEMENT  元素名 ANY>

                     3,#PCDATA:是不包含其他任何子元素而只包含字符数据的元素。

                            <!ELEMENT  元素名 #PCDATA>

                     4,子元素模式:可以包含一系列的子元素,但不能包含字符数据。

                            <!ELEMENT  元素名  (子元素1,子元素2,子元素3,.....) >

                     5,混合模式:可以包含子元素又可以包含已编译的字符数据,即字符数据与子元素的混合。

                          <!ELEMENT  元素名   (#PCDATA|子元素1|子元素2|......) *>

元素在声明中正则表达式的含义:

 

元字符含义
    *星号表示可选项目,在使用中它可以出现任意多次
    +加号表示项目可以出现任意多次,但必须至少出现一次    
     ?问号表示可选的项目在使用中只能出现一次或不出现
    ()一组要共同匹配的表达式
     |OR关系,表示可以选择用竖线分隔开的若干个项目中的一个 
     , AND关系,表示要求严格遵守从声明时的顺序要求

 

 

元素属性的声明语法:

          <!ATTLIST   元素名 属性名1   属性1类型  缺省属性1取值

                                       属性名2   属性2类型  缺省属性2取值        .........  >      

            属性的类型: 

 

属性类型含义
   CDATA   任意的字符数据,即没有标记的文本      
   NMTOKEN       XML名称标记
   NMTOKENS由空格分隔的多个XML名称标记
    ID不被文档中任何其他ID类型属性共享的唯一的名称   
    IDREF文档中ID类型属性的值
IDREFS由空格分隔的多个ID类型属性的值
Enumerated枚举类型,即可选择的可能值列表
NOTATION在DTD中声明的注记的名称
ENTITY在DTD中声明外部实体的名称
ENTITIES在DTD中声明的由空格分隔的多个外部实体的名称

 

元素属性默认值的含义 :

 

属性默认值含义
 #REQUIRED       元素的每个实例必须包含该属性    
   #IMPLIED元素实例可以选择是否包含该属性     
  #FIXED+固定值属性值固定为指定的值,如果元素中不包含该属性,解析器会自动将属性值设置为固定值 
  默认值如果元素中不包含该属性,解析器会自动将默认值设置为属性值;也可以用其他属性值覆盖默认值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值