XML之DTD

DTD声明元素属性

使用DTD的ATTLIST关键字可以为XML声明元素的属性。

price
: 表示要声明属性所在的元素

unit
: 表示属性名称

CDATA
: 表示属性的类型

RMB
: 表示属性默认值,unit省略不写时默认为RMB。

在DTD声明列举属性值

如果希望属性值是一系列固定值之一,可以使用列举属性值。

使用DTD的ATTLIST关键字声明属性时,“|” 可以为属性列举具体的属性值,在XML中使用该属性时,其值必须为列举的值之一。

(元|角|分)
: 列举price属性值为元,或角,或分。

"元"
: 表示未明确写出该属性时,其属性值为元。

内部定义DTD

XML 的使用规则是由使用者自己来定义的,如果其他人想使用这个XML就要遵守其使用规则,这个规则可以通过 DTD 来定义。

在定义 XML 文档结构时,使用DOCTYPE可以声明DTD。

如果DTD编写错误,使用浏览器打开XML文件,也会报错。




    
    
    
    
    
    
]>


    <<Java范例完全自学手册>>
    人民邮电出版社
    张三&李四
    987115201027
    59.80
    

DOCTYPE
: 表示声明 DTD 的关键字。

ELEMENT
: 用于声明 XML 元素。


使用外部 DTD

一般会把DTD单独定义成一个DTD文档,XML通过引用的方式使用DTD的定义。

使用DOCTYPE表示DTD时,SYSTEM表示引用一个外部DTD,在SYSTEM后面添写DTD的URL地址。

book
: 表示是XML的根节点

simple_demo.dtd
: 表示DTD文件的名称










SYSTEM的位置既可以定义为SYSTEM,又可以定义为PUBLIC,当定义为PUBLIC时,表示引用的DTD是由权威机构定制的,供特定行业或公众使用。


使用DTD定义XML元素

XML的基本单位是元素,所以在DTD中声明元素也是最基本的,ELEMENT用于DTD元素的声明,在声明的同时还可以定义元素的使用情况。

使用DTD的ELEMENT关键字可以声明XML元素。

name
: 表示XML元素的名称

根据上述定义,book元素只能包含name元素、publisher元素、author元素、ISBN元素、price元素、url元素。

在定义DTD时,如果不想给某个元素的约束太强,让它包含任意内容,可以把元素定义成ANY。

如果希望元素内容没有任何内容,则可以定义为EMPTY。


DTD声明重复元素

定义DTD时,默认子元素只能在父元素里出现一次。

如果希望父元素内部能出现多个子元素,声明时要在子元素的谋面添加“+”。

  • 使用 “+” 表示XML子元素在其父元素里至少出现一次,也可以出现多次。
  • 使用 “*” 表示XML子元素可以在其父元素中出现零次或多次。
  • 使用 “?” 表示该元素只能出现零次或一次。

DTD声明选择性元素

使用 “|” 元素时,“|” 前后的两个元素在父元素中有且只有一个出现。

在DTD里把 “|” 和 “*” 混合在一起使用,可使定义的元素更灵活。

你可能感兴趣的:(XML之DTD)