XML文档类型定义 DTD详解

来源:互联网 发布:淘宝产品评测报告 编辑:程序博客网 时间:2024/05/17 04:30

DTD (Document Type Definition 文档类型定义)
    1.对DTD的初步认识;
        一个简单的DTD文件 :             注:这里的"书+"是正则表达式,表示书这个元素至少要出现一次
                        注:(书名,作者,售价)表示书标记中有这些元素,","表示按顺序出现。
                        注:#PCDATA 表示内容为普通的文本字符串。
                       
                       
    2.在XML文档中引入外部DTD文件;
        1)XML文档通过使用DOCTYPE声明语句 (文档类型定义语句) 来指明它所遵循的DTD文件,DOCTYPE声明语句紧跟在XML文档声明语句后面,有两种格式:
            (1)
            (2)
            例如:
                (1)
                (2)
        2)DTD标记名称应符合一些标准的规定,对于ISO标准的DTD以ISO三个字母开头;被改进的非ISO标准的DTD以加号"+"开头;未被改进的非ISO标准的DTD以减号"-"开头。
        3)对于一些已经制定成为了和行业标准的DTD文件,一些相应的解析器程序可能已经将它们内嵌进去,所以在解析时并不一定要从制定的URL上进行下载。
    引入外部DTD文件示例:
       
         
       
           
                class1
                32
           

       

    3.在XML文档中直接嵌入DTD定义语句;
        就是直接在XML文档的 里面定义DTD 。首先写DTD的文档类型名称 然后将DTD的定义内容写在后面的这个中括号中。如下:
                            
               
               
               
            ]>

DTD文件的定义

一:DTD元素定义.
    元素定义细节:
        1)元素定义的语法格式:
        例如:
           
           
        使用规则:
            (#PCDATA)       是 parsed character data (被解析的字符数据) 的简写
            (name,sex,age)    元素中嵌入一组子元素
            (name,#PCDATA)  元素中的内容还可以是子元素和普通字符串的混合体
            EMPLY        表示空元素,这种元素一般写成
的形式
        2)DTD使用与XML文档相同的注释方式 :
        3)每条元素定义语句的顺序是无关紧要的.
        4)具有不同用途的元素不能使用相同的元素名.
        5)一个元素的各个组成成分之间可以有各种关系:
                     表示myfile元素中有三个子元素,这三个子元素可以按任意顺序出现。
                 表示myfile元素中有三个子元素,且这三个子元素在xml中的出现顺序必须与括号中的出现次序一致 (逗号表示按次序出现)。
                 表示myfile元素中只能包含这三个子元素中的一个 ("|"表示或的意思)。
        6)在元素的使用规则中还可以定义子元素的出现次数:
            (person+)   (person?)   (person*)   (person)
            注:+表示它所修饰的成分至少出现一次 ; ?表示出现次数最多一次 ; *表示无限制,可以不出现也可以出现 ;  元素上没有使用任何修饰符表示这个元素必须出现且只能出现一次。
        7)一个括号()可用于将括在其中的内容组合成一个可统一操作的分组,分组中可以嵌套更小的分组。
            如:   

二:DTD属性定义.
    1.属性定义的语法格式;
                    属性名1 属性类型 设置说明
            属性名2 属性类型 设置说明
            ......   (注意:这里列出的属性必须属于同一个元素)
        例如:
                    name CDATA #REQUIRED
            age CDATA #IMPLIED
            注:CDATA是一种属性类型,#REQUIRED和#IMPLIED是设置说明 前者表示属性是必须的,后者表示属性是可有可无的。
        >
    2.属性定义->设置说明:
        (1)#REQUIRED    设置属性为必须属性
        (2)#IMPLIED    设置属性为可有可无
        (3)#FIXED    设置属性的取值固定为某一个特定的值,还必须为属性提供一个固定的设置值。
            示例:job CDATA #FIXED "系统分析师"
        (4)使用默认值    属性的设置说明不写前面三种,而是直接写一个默认值,当没有给该属性设值时,会采用默认值。
            示例:sex CDATA "男"

    3.属性定义->类型:
        CDATA        表示属性值的内容为普通的文本字符串,但属性值中出现的特殊字符必须使用相应的转义字符来表示。
        ENUMERATED    表示所设置的属性值必须是某一组属性值中的一个(即枚举类型),注意,在定义时是不会出现ENUMERATED关键字的,而是在括号中写上该枚举的所有值,用"|"分隔。
            示例:
                    这里的sex属性是枚举类型,并且为它设置了一个默认值"男"
        ID        这种类型用于唯一标识xml中的某个元素,这个xml文档中该属性的设置值不能重复。
        IDREF 和 IDREFS
        NMTOKEN 和 NMTOKENS
        NOTATION
        ENTITY 和 ENTITYS
    4.DTD实体定义:
        1)实体的根本作用是为一段文本内容创建一个别名,以后在XML文档中就可以座次引用这个别名,XML解析器程序将把XML文档中出现的别名引用转变成其所对应的文本内容。
        2)在DTD定义中,一条语句用于定义一个实体。
        3)实体可分为两种类型:引用实体和参数实体。
            (1)引用实体(用于在xml文档中被引用,实质:将实体的内容插入使用实体的xml文档的写实体名的位置):
                语法格式:
                       
                   
                引用方式(xml中): &实体名;
                例如:
                                        yright SYSTEM "http://javaeye.com/copyright.xml"
                    ]>
                    ©right;   
            (2)参数实体(定义在DTD并且使用在DTD文件中。实质:严格的内容替换的过程):
                语法格式:
                引用方式(DTD中): %实体名称;
                例如:
                    
                    

原创粉丝点击