您的位置:首页 > 其它

XML 技术讲座之四 XML DTD的建立与使用(下)

2005-05-17 16:34 225 查看
DTD中元素属性的声明
在DTD中定义属性时,我们使用下面的格式来给一个元素定义一组合适的属性,同时指定这些属性的类型和缺省值:
<!ATTLIST 元素名 (属性名 属性类型 缺省值)*>
元素名是属性所属的元素的名字。
属性名是属性的命名。
缺省值是属性的初值。有以下四种类型:

名称定义说明方式
必须赋值的属性XML文档中必须为这个属性给出一个属性值<!ATTLIST 元素名 属性名 属性类型 #REQUIRED>
属性值可有可无的属性不要求在XML文档中给该属性赋值,而且也无须在DTD中为该属性提供缺省值<!ATTLIST 元素名 属性名 属性类型 #IMPLIED>
固定取值的属性需要为一个特定的属性提供一个缺省值,并且不希望XML文档中另外给出元素值把这个缺省值替代掉 <!ATTLIST 元素名 属性名 属性类型 #FIXED "缺省值">
事先定义了缺省值的属性需要在DTD中提供一个缺省值,在XML文档中可以为该属性给出新的属性值,也可以不另外给出属性值,采用DTD中给出的缺省值。<!ATTLIST 元素名 属性名 属性类型 "缺省值">
这里,给出一个完整的例子:
<!ATTLIST 页面作者
姓名 CDATA #IMPLIED
年龄 CDATA #IMPLIED
联系信息 CDATA #REQUIRED
网站职务 CDATA #FIXED "页面作者"
个人爱好 CDATA "上网"
>
属性类型用来指定该属性是属于十个有效属性类型中的哪种类型。这十种类型是:

类型含义
CDATA纯文本,由可显示字符组成的字符串
Enumerated取值来自一组可接受的取值的列表
ID以属性值的方式为文档中的某个元素定义唯一的标识,用以区分具有相同结构相同属性的不同元素
IDREF属性值引用已定义的ID值,方法是把那个元素的ID标识值作为该属性的取值;IDREFS是IDREF的复数形式,取值可以是若干个ID标识
IDREFS
ENTITY取值为一个已定义的实体
ENTITIES
NMTOKEN面向处理程序的类型
NMTOKENS
NOTATION取值为一个DTD中声明的符号,这个类型对于使用非XML格式的数据非常有用。
这十种类型,又可分为三个大类。第一大类是字符串类型,指的是CDATA,它的值可以是任何合法的字符串。第二大类是枚举类型,包括Enumerated和NOTATION,需要在DTD中为它们声明可取值的列表。剩下的七个类型都属于第三大类,又称为记法类型,含有不同的词法及语意限定。
参数实体
最后再来说一说参数实体。前面说过,参数实体专门用于DTD,它可以方便元素和属性的声明。在下面这个例子中,参数实体简化了本科生信息和研究生信息中相同部分的录入工作:
<!ENTITY % GENERAL_INFO "姓名 | 学号 | 性别 | 出生日期 ">
<!ELEMENT 本科生 (%GENERAL_INFO;)>
<!ELEMENT 研究生 (%GENERAL_INFO; | 导师)>
虽然从理论上讲参数实体所代表的内容可以为任何文本,但由于它专门用于DTD中,出现在元素定义的正则表达式里,所以对它有一些特殊的规定。参数实体的替换文本中括号必须成对出现,并且,它不能以连接符"|"或","结尾,因为这样常常会留有错误隐患。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: