混合内容&空元素
当然,可能也有一些时候,你在一个元素中既希望包含子元素,也希望包含纯文本。 XML中允许这种使用方法,并把这种元素称为混合内容的元素。在下面的例子中, “联系人”就是一个混合元素。
]>
<联系人列表>
<联系人>
<姓名>张三姓名>
<电话>(010)62345678电话>
zhang@aaa.com
这是关于张三的信息
联系人>
联系人列表>
注意,由于在“(姓名|电话|EMAIL|#PCDATA)”之外有“*”,所以在元素“联系人”中可以包含零个或多个“姓名”、电话、EMAIL和纯文本字段。
还
有一种情况没有说,那就是,一个元素中不包含任何子元素,也不包含纯文本。对于这种情况,我们可以定义一个空标记。当然,定义这样一个标记很简单,你只需
要使用关键字EMPTY就可以了,例如: 这样,在你的XML文件中,就可以使用一个空元素<
HR/>。
定义有效的元素属性
现在我们已经学会如何定义一个元素以及它的内容,如何描述父元素与子元素之间错综复杂的关系,只差不知道如何定义元素的属性了。
一个有关“商品”的元素,它有两个属性,即“类型”和“颜色”:<商品 类型 = "服装" 颜色 = "黄色">
在Dtd中定义属性时,我们使用下面的格式:
元
素名是属性所属的元素的名字,在上面例子中,元素名是“商品”;属性名是属性的命名,例子中,“类型”和“颜色”是属性名;缺省值说明在XML文件中,如
果没有特别说明属性的取值,语法分析器默认它具有的取值;属性类型则用来指定该属性是属于十个有效属性类型中的哪种类型。
注意:由于ATTLIST是一个属性的列表,它可以包含很多属性,在实际应用中,一个元素也经常有多个属性。
上面例子中的属性可以如下定义:
类型 CDATA #REQUIRED
颜色 CDATA #IMPLIED
>
在元素说明的四个部分中,我们需要再详细讨论一下元素类型和缺省值。在下一节中,我们就从缺省值说起。
属性缺省值
根据XML文件是否必须为一个属性提供取值,属性的缺省值又可以分为以下三类:
必须赋值的属性
关键字REQUIRED说明XML文件中必须为这个属性给出一个属性值。例如,假设你想定义一个"页面作者"元素,并把这个元素加入所有网站中的每一个页
面。之所以定义这个元素,是为了页面编辑者能够提供他的联系信息,以便当发现页面错误或无效链接时,可以及时地通知他。在这种情况下,每个页面作者都有不
同的个人信息,所以你无法事先知道应该用什么作为缺省值,但你又的确需要提供每个人的信息。这时候,你就可以把与联系信息相关的属性定义为必须的
(REQUIRED),而且不用提供缺省值。
属性值可有可无的属性
当使用IMPLIED关键字时,文法解释器不再强行要求你在XML文件中给该属性赋值,而且也无须在Dtd中为该属性提供缺省值。可以说,这是对属性值有无的最低要求,现实中经常用到。
固定取值的属性
还有一种特殊情况,你需要为一个特定的属性提供一个缺省值,并且不希望XML 文件的编写者把你的缺省值替代掉。这时候,就应该使用FIXED关键字,同时为该属性提供一个缺省值。
定义缺省值的属性
如果不使用上面任何一种关键字的话,该种属性就是属于这种类型。对于这种属性,你需要在Dtd中为它提供一个缺省值。而在XML文件中可以为该属性给出新
的属性值来覆盖事先定义的缺省值,也可以不另外给出属性值,后一种情况下它就默认为采用Dtd中给出的缺省值。
至于究竟采用哪种缺省值,就看实际需要了。下面给出一个具体的例子:
姓名 #CDATA #IMPLIED
年龄 #CDATA #IMPLIED
联系信息 #CDATA #REQUIRED
网站职务 #CDATA #FIXED "页面作者"
个人爱好 #CDATA "上网">
阅读(978) | 评论(0) | 转发(0) |