【XML系列】----DTD中的元素定义

DTD的文档结构如下:

        第一行是DTD声明部分,该声明与XML文档的声明语法格式相同

        0到多个注释部分,DTD注释与XML文档的注释格式完全相同

        0到多个<!ELEMENT…>定义的每一个就是一个XML元素

        0到多个<!ATTLIST…>顶一个每一个就是一个XML元素的属性

        0到多个<!ENTITY…>顶一个每一个就是一个实体

        0到多个<!NOTATION…>顶一个每一个就是一个符号

    它们彼此之间完全独立,无需相互嵌套。

1.  定义元素

  元素类型的定义的全称是:Element Type Definition,简称ETD,它不但会定义每个文件中可能存在的元素,给出的元素名称,而且会定义元素的具体类型。

元素类型描述主要有五种:

  a)  任意类型

    可以是以下四种中任意的内容

    例如:<!ELEMENT book ANY>

  b)  字串值

    例如:”aaa”

  c)  空元素

    <br/>

  d)  包含子元素

    元素嵌套

  e)  混合元素

    案例:

        

2.  定义子元素

  a)   定义有序的子元素

    使用英文逗号,用于分隔有序的子元素

    <!ELEMENT book(name,price,state)>

  b)   互斥的子元素

    互斥的子元素表明一些列的子元素中只能出现其中之一。

    使用”|”进行分隔

  c)   子元素出现的频率

    +(一次次或多次)

    ?(0次或一次)

    *(0次或多次)

    注意:混合类型中的频率只能按如下方式添加频率

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

    只能在最后加

  d)   组合子元素

    <!ELEMENT book(name|price|state)>

    这种元素类型呗成为组合子元素

    组合元素也可以嵌套写:

    <!ELEMENT book((name,price)|state)>

  e)   无序的子元素

    DTD并没有定义无序子元素的语法,我们只能借助元素组进行定义

    例如:

    <!ELEMENT book(name|price|state)*>

    这时在XML文档中书写标签时,在book标签下三个子元素的顺序是无序的。

posted @ 2011-06-17 15:39  Laughing_Vzr@Stand By  阅读(3763)  评论(0编辑  收藏  举报