• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

10.3 声明多个属性
元素通常具有多个属性。HTML 的IMG 元素可有HEIGHT、WIDTH、ALT、BORDER、ALIGN 和其他几个属性 。实际上,大部分HTML
标记都具有多个属性,XML 标记也是如此。例如,很自然的RECTANGLE 元素需要LENGTH 和WIDTH 属性:
<RECTANGLE LENGTH= "70px" WIDTH="85px"/>
也可用几个属性声明来声明这些属性,一个属性声明对应一个属性。例如:
<!ELEMENT RECTANGLE EMPTY>
<!ATTLIST RECTANGLE LENGTH CDATA "0px">
<!ATTLIST RECTANGLE WIDTH CDATA "0px">
上例说明,RECTANGLE 元素具有LENGTH 和WIDTH 属性,它们的缺省值均为0px。
可按如下方式,组合两个<!ATTLIST>标记为一个单一声明:
<!ATTLIST RECTANGLE LENGTH CDATA "0px"
WIDTH CDATA "0px">
该声明声明了LENGTH 和WIDTH 属性,两个属性类型均为CDATA,缺省值为0px。若各属性的类型或缺省值不同,也可用这种
语法结构进行声明。如下所示:
<!ATTLIST RECTANGLE LENGTH CDATA "15px"
WIDTH CDATA "34pt">
从个人角度来说,我不喜欢这种风格。看起来很混乱;且为易于辨认,过于依赖于额外的空格在其中的正确放置(尽
管这些空格对标签的实际意义而言并不重要)。可是你一定会遇到其他人书写的、这种风格的DTD,所以必须掌握这种 书
写方法。
XML 实用大全
第 298 页
10.4 指定属性的缺省值
若不采用明确指定一个缺省属性值(如0px)的方式,属性声明可以要求作者提供属性值,或者完全忽略该属性值,甚至总
是使用缺省值。这三种类型分别由三个关键词#REQUIRED、#IMPLIED、#FIXED 加以指定。
10.4.1 #REQUIRED
有时要选一个恰当的缺省属性值并不容易。例如,在为创建一个用于内部网的DTD 时,可能要求所有的文档都至少有一个空
的<AUTHOR1>标记;这些标记通常情况下并不显示,但可用来识别创建文档的作者。标记中拥有NAME、EMAIL 和EXTENSION
属性,以便与作者联系。例如:
<AUTHOR NAME="Elliotte Rusty Harold"
EMAIL= elharo@metalab.unc.edu EXTENSION= "3459"/>
假设要强制要求在内部网上张贴文档人的表明身份,就不采取为这些属性提供缺省值的方法。然而XML 无法阻止任何人把作
者身份定为“Luke Skywalker”(洛克天行者),但至少可通过使用#REQUIRED 的缺省值方式,要求指定作者身份为某个人。
例如:
<!ELEMENT AUTHOR EMPTY>
<!ATTLIST AUTHOR NAME CDATA #REQUIRED>
<!ATTLIST AUTHOR EMAIL CDATA #REQUIRED>
<!ATTLIST AUTHOR EXTENSION CDATA #REQUIRED>
如果语法分析器遇到一个<AUTHOR/>标记,该标记没有包含这些属性中的一个或几个时,将返回一个错误。
也可使用#REQUIRED 强迫作者提交IMG 元素的WIDTH、HEIGHT 和ALT 属性。例如:
<!ELEMENT IMG EMPTY>
<!ATTLIST IMG ALT CDATA #REQUIRED>
<!ATTLIST IMG WIDTH CDATA #REQUIRED>
<!ATTLIST IMG HEIGHT CDATA #REQUIRED>
任何试图忽略这些属性的行为(这样的Web 页面太多了)都将产生一个不合法文档。XML 处理器将注意到这种错误,并且将
通知缺少这些属性的作者。
10.4.2 #IMPLIED
有时可能找到一个好的属性缺省值,但也不想要求文档作者包含这属性值。例如,假设在内部网上张贴文档的一些人拥有电
子邮件地址,但它们没有电话分机号;为此,不想要求它们在<AUTHOR/>标记中包含EXTENSION(分机号)属性部分。例如:
<AUTHOR NAME="Elliotte Rusty Harold"
XML 实用大全
第 299 页
EMAIL="elharo@metalab.unc.edu "/>
如果依然不想为EXTENSION(分机号)提供缺省属性值,但是想提供作者引入这种类似属性的能力。在这种情况下,就可使
用#IMPLIED 的缺省值。如下所示:
<!ELEMENT AUTHOR EMPTY>
<!ATTLIST AUTHOR NAME CDATA #REQUIRED>
<!ATTLIST AUTHOR EMAIL CDATA #REQUIRED>
<!ATTLIST AUTHOR EXTENSION CDATA #IMPLIED>
如果XML 处理器遇到没有EXTENSION 属性的<AUTHOR/>标记,就不向XML 应用程序提供有用的属性值。应用程序按收到的通
知进行相应的选择。例如,应用程序把元素送入SQL 数据库中,属性映射为字段,应用程序或许在数据库相应字段中插入空
的数据。
10.4.3 #FIXED
最后,可能想提供一个不允许作者更改的属性缺省值。例如,希望为在内部网上张贴文档的人员的AUTHOR 元素指定一个同
等的COMPANY 标识属性。方法如下:
<AUTHOR NAME= "Elliotte Rusty Harold" COMPANY="TIC"
EMAIL= "elharo@metalab.unc.edu" EXTENSION="3459"/>
可通过指定缺省值为#FIXED,其后跟随实际的缺省值,来要求所有的人员对COMPANY 属性使用该缺省值。例如:
<!ELEMENT AUTHOR EMPTY>
<!ATTLIST AUTHOR NAME CDATA #REQUIRED>
<!ATTLIST AUTHOR EMAIL CDATA #REQUIRED>
<!ATTLIST AUTHOR EXTENSION CDATA #IMPLIED>
<!ATTLIST AUTHOR COMPANY CDATA #FIXED "TIC">
文档作者不需要在它们各自的标记中真正地引用固定的属性。如果它们没有包括固定属性,则使用缺省值;如果包括了固定
的属性,无论如何它们使用的属性值必须一致,否则语法分析器将返回一个错误信号。
XML 实用大全
第 300 页
10.5 属性类型
前面的所有例子都具有CDATA 类型的属性。CDATA 是最通用的类型,但此外还允许使用其他九种属性类型。所有十种类型如
下:
• CDATA
• Enumerated(枚举)
• NMTOKEN
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(86)