XML初步认识(二)
外部DTD
外部文件类型定义存在于独立文件中,文件扩展名为“.dtd”。外部DTD的好处是:可以方便的被多个XML文档共享,只需要定义一份DTD文档,即可为多个XML文档定义语义约束。
方法:<!DOCTYPE 根元素名 SYSTEM“DTD-URL”>
SYSTEM:关键字,指该外部DTD是私有的
DTD-URL:通过URL将外部DTD引用到XML文档中,可是使绝对地址也是可相对地址
公用DTD
有一种外部DTD,是由某个权威机构制定,提供特定行业或公司,这种DTD又被称为公用DTD。
方法:<!DOCTYPE 根元素名 PUBLIC “DTD-NAME” “DTD-URL”>
DTD对元素声明
使用ELEMENT声明XML元素的语法,语法格式如下:
<!ELEMENT 元素名 元素内容>
注意:ELEMENT关键字必须大写
元素名:为当前元素指定的元素名称
元素内容:元素后面的内容用来制定元素的内容类型它可以分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA(字符文本)5种类型。
定义混合内容元素
某个元素既有字符串内容,又包含子元素,被称为混合内容的元素。一般来说,XML文档不推荐使用混合内容的元素。
<!ELEMENT 父元素名 (#PCDATA|子元素1|子元素2|子元素3…..)*>
注意:#PCDATA必须放在最前面。
#PCDATA合格元素之间只能用竖线(|)分割。
子元素1,子元素2和资元素3之间的竖线(|)并不是表示互斥,而只是表示这些元素能无序的重复出现,而且次数不受限制。
不要试图在各个子元素之后添加?,*,+等表示频率的修饰符。
有序的子元素
用英文逗号(,)作为子元素之间的分隔符,则子元素之间必须遵守所定义的顺序。
互斥的子元素
互斥的子元素表明一系列子元素之间只能出现其中一次。互斥子元素使用竖线(|)分隔,以竖线(|)分隔的多个元素只能出现其中之一。
子元素出现的频率
自元素的出现频率通过在元素声明后紧跟一个标识频率的特殊标记来表示,DTD中表示频率的特殊标记有3个:
+:表明子元素可以出现1次或多次
*:表名子元素可以出现0次或多次
?:表名子元素可以出现0次或1次
如果在定义子元素时,没有子元素后制订任何表示频率的特殊标记,则表明这些子元素只能出现一次,且必须一次。
DTD对属性声明
在DID中,属性通过ATTLIST声明来进行声明。一个属性声明可以声明一个元素的多个属性。
<!ATTLIST 元素名 属性名 属性类型 [属性限定条件] [默认值]>
注意:在没有指定“元素对属性的约束”时,必须为该属性指定“默认值”;当“元素对属性的约束”是#REQUIRED时,必须为该元素提供属性,不能为该属性指定“默认值”;当“元素对属性的约束”是“IMPLIED”时,该属性是可有可无的,不能为该属性指定“默认值”;当“元素对属性的约束”是“FIXED”时,该属性的值是固定的,定义是必须制定固定值。使用该元素时无须为其分配该属性,XML处理器会自动为该属性增加固定值,必须为该属性指定“默认值”;