XML如何定义文档的属性

 XML元素的属性是对元素的补充和修饰,通过属性,我们能将一些简单的特性与元素相关联。

1.声明属性的语法

在DTD中,属性的声明语法如下:

<! ATTLIST 元素名 (属性名 属性类型 缺省值)* >

其中

▷<! ATTLIST:表示这是一条属性声明指令,ATTLIST为关键字,大写;
▷元素名:表示属性所修饰的元素的名称;
▷属性名:指定要声明的属性的名称;
▷属性类型:指定该属性的属性值所属类型;
▷缺省值:在声明属性时,可以为其质地更一个缺省值,也可以不指定。如果没有明确说明属性的取值,则语法分析器默认它使用缺省值。苏姓声明可以有几种不同的缺省设置,下面,介绍几个具体的方法。

注意:声明中圆括号后跟一个“*”号,表示ATTLIST是一个属性的列表,他包含某元素多个属性的声明。为了增强可读性,每个属性声明通常占据单独的一行。

2.属性的缺省值

元素属性缺省值的作用暴怒仅仅在于通常意义上的用于说明属性默认情况下的值,他可以用于说明属性的取值方法。属性声明有四种不同的缺省设置,该设置指定了属性在文档中出现的方法。

①使用关键字REQUIRED指定在XML文档中该属性不可省略,必须为这根本属性给出一个属性值。例如:

<! ATTLIST 作者 联系方式 CDATA #REQUIRED >

意味这在XML文档中使用“作者”元素时,必须同时指定“联系方式”属性的值,其值为CDATA类型。

②属性值可有可无的属性#IMPLIED

使用IMPLIED关键字表示并不强行要求在XML文档中给该属性赋值,而且也无须在DTD中为该属性提供缺省值。可以说,这是对属性值有无的最低要求,现实中经常用到。

③固定取值的属性#FIXED

还有一种较为特殊的情况:当需要为一个特定的属性提供一个缺省值,并且规定XML文档的编写者不能更改它时,就应该使用FIXED关键字,同时为该属性提供一个缺省值。

④仅定义缺省值的属性

最后还有一种属性,声明时不使用以上任何一种关键字,仅定义该属性的缺省值。如果XML文档元素中不包含该属性,则分析器将缺省值作为属性值,否则,可以在XML文档中给出新的属性值来覆盖缺省值。

DTD可定义的属性类型公有10种,它们是CDATA、NMTOKEN、NMTOKENS、Enumer-ated、ID、IDREF、IDREFS、ENTITY、ENTITIES和NOTATION,以下介绍。

1.CDATA属性类型

CDATA是最常见的属性类型,表示属性值可以是任何文本字符串。当然几个特殊符号,必须把它经过转义后方能使用,由实体&amp;替代“&”,实体&lt;代替“<”,实体&quot;替代“"”等。注意CDATA关键字和元素声明中关键字PCDATA不同。

2.NMTOKEN属性类型

NMTOKEN类型的属性也是文本数据的类型。和CDATA不同的是,这类属性的属性值只能是由英文字母、数字以及下划线符号“_”、连接符号“-”、英文句点符号“.”和冒号“:”所构成的文本字符串,且字符串中不能包含空格符号。

3.NMTOKENS属性类型

NMTOKENS属性类型表示许多的NMTOKEN结合在一起,并且以空格作为分隔。一般来说,使用NMTOKENS类型的原因和使用NMTOKEN的原因类似,不同的是NMTO-KENS的属性值是由空格隔开的多个NMTOKEN组成。

4.enumerated(枚举)属性类型

枚举类型的属性表示其属性值将在一组有竖线“|”隔开的列表中选取。设如果要规定XML文档中属性的值不是任意的字符串,二十在可能的若干个值中选择,则可以将属性类型设定为enumerated类型。注意:enumerated不是DTD的关键字。

5.ID属性类型

ID属性用于为文档中的元素定义唯一标识,文档创建工具和其他应用程序一般使用ID来标识文档的元素,而不必关心他们的准确含义。该属性的作用类似于HTML文档中的内容链接。

ID类型的属性值必须是有效的XML名称,它以字母开头并有数字、字母及下环线组成,且不含空格,标记的属性名称也不能用于ID属性。此外,每个元素不能有多个ID类型的属性。通常,除了ID属性的值之外,多个元素实际上可以相同。

设提醒:不要给ID类型的属性事先指定缺省值,这容易引起不同元素具有相同标识的情况,更不能使用FIXED型的缺省值,因为FIXED属性智能有一个值,而每个ID类型的属性必须有不同的值。大多数ID属性使用REQUIRED缺省类型,当然,这也不是必须的。有的应用并不要求每个元素都有自己的标识,所以也可以使用IMPLIED缺省类型。

6.IDREF属性类型

IDREF类型允许属性值是文档中的另一个元素的ID。

posted @ 2012-07-24 13:07  PERPAN  阅读(430)  评论(0)    收藏  举报