• 热门标签

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

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

• NMTOKENS
• ID
• IDREF
• IDREFS
• ENTITY
• ENTITIES
• NOTATION
上述属性类型中的九种在类型字段中的值为常数,而Enumerated 是一种特殊的类型,表示属性值必须为一可能取值列表中
的一个。下面分别对各类型进行深入的研究。
10.5.1 CDATA 属性类型
最通用的属性类型CDATA,表明属性值为不包括小于号(<)和引号(")的任意文本字符串。可通过普通的实体引用(&lt;
和&quot;)的方式或由字符引用Unicode 值的方式插入小于号和引号字符。原始的和号(&)&#0;&#0;不是字符或实际引用
开始的和号,必须使用换码符&amp;。
实际上,即使属性值中不可避免的要包含双引号(")的情况下,也不可直接使用;替代的方法是用单引号把双引号括起来。
如下例所示:
<RECTANGLE LENGTH= 7" WIDTH= 8.5" >
如果属性值中包含单引号和双引号,而且并不用作界定属性值的用途;它们必须替换为实体引用&apos;(单引号)和&quot;
(双引号)。例如:
<RECTANGLE LENGTH= 8& pos;7" WIDTH="10 6&quot;"/>
10.5.2 Enumerated 属性类型
Enumerated 类型不是XML 的关键词,而是由竖线分隔的可能的属性值列表。任一值均需为有效的XML 名称。文档作者可选
取列表中的一个成员为属性的值,缺省值必须为列表中的一个值。
例如,假设希望某个元素具有可见和不可见属性。希望该元素具有一个VISIBLE 属性,其属性值为TRUE 或FALSE。如果该
元素为简单的P 元素,那么<!attlist>声明可如下所示:
<!ATTLIST P VISIBLE (TRUE | FALSE) "TRUE">
上述声明表示P 元素的VISIBLE 属性可有可无,若拥有VISIBLE 属性,则属性值必须为TRUE 或FALSE;如果没有VISIBLE
属性,则假定该值为TRUE。例如:
XML 实用大全
第 301 页
<P VISIBLE= "FALSE">You can t see me! Nyah! Nyah!</P>
<P VISIBLE= "TRUE">You can see me.</P>
<P>You can see me too.</P>
就其自身而言,这声明并不是一个提供隐藏文本能力的魔术般的咒语。这种能力依然依靠应用程序去理解不应该显示不可见
元素。为决定元素的显示或隐藏,可以通过对元素应用VISIBLE 属性的样式单规则来进行设置。例如:
<xsl:template match= "P[@VISIBLE= FALSE ]" >
</xsl:template>
<xsl:template match= "P[@VISIBLE= TRUE ]" >
<xsl: apply-templates/>
</xsl:template>
10.5.3 NMTOKEN 属性类型
NMTOKEN 属性类型限定属性值为有效的XML 名称。如第6 章所述,XML 名称必须以字母或下划线开头。名字中后面的字符可
以为字母、数字、下划线、连字符和句号。但不可包括空格(下划线通常作为空格的替代品)。从技术上说,名字中可包含
冒号(:)但不应该使用冒号,因为冒号被保留为与命名域(namespace)一起使用。
当使用编程语言处理XML 数据时,证明了NMTOKEN 的价值。这并不是一种偶然,除了允许使用冒号以外,上述规则与JAVA,
JavaScript 和其他程序语言标识符规则一致。例如,可在元素中使用NMTOKEN 属性访问特别的JAVA 类。那么就应用JAVA
的API 映射把数据传送到专有类的特有方法中。
当需要从大量名字中选取不是XML 的规定部分但与XML 命名要求相符的名字时,就能体现NMTOKEN 的用途。这些要求的最重
要部分就是对空格的限制。例如,NMTOKEN 可以用于下述属性,其值必须映射为8.3 的DOS 文件名,另一方面该属性也能用
于UNIX、Macintosh 或Windows NT 文件名,而这些文件名中通常包含空格。
例如,假如要求<ADDRESS/>标记中的州(state)属性为两个字母缩写;不能用DTD 强制这些特性的执行,但可应用如下
<!ATTLIST>声明防止人们输入类似“New York”或“Puerto Rico”的值:
<!ATTLIST ADDRESS STATE NMTOKEN #REQUIRED>
无论何种情况,像“California”、“Nevada”和其他一个单词的州名依然为合法值。当然,可以利用具有几十个两个字母
的代码的枚举列表的简单方法;但是这种方法将导致巨大的工作量,比人们想象的大得多。举个例子,想一想,如果用两个
字母代码代表美国50 个州、所有的领土和属地、所有的国外的军事基地和加拿大所有的省份会是一个什么样的情况?另一
方面,如果曾经在DTD 文件中的参数实体引用定义了这样的列表,就可重复多次使用这个文件。
10.5.4 NMTOKENS 属性类型
NMTOKENS 属性类型几乎就是NMTOKEN 的复数形式。这种类型的属性可以使如下情况合法——属性由若干XML 名称字组成,
彼此间由空格分隔。通常可为使用NMTOKEN 属性相同的理由而使用NMTOKENS 属性,但仅仅在需要多个名字的时候。
XML 实用大全
第 302 页
例如,如果state 元素的属性值需要多个两个字母州代码时,就可应用下例所示的方法:
<!ATTLIST ADDRESS STATES NMTOKENS #REQUIRED>
然后,就可编写如下所示的标记:
<ADDRESS STATES="MI NY LA CA">
不幸的是,如果应用这种技术,就不能再排除类似“New York”这样的州名,因为州名中每一独立的部分都为一个合格的
NMTOKEN。如下所示:
<ADDRESS STATES="MI New York LA CA">
10.5.5 ID 属性类型
一个ID 类型的属性标识文档中唯一的元素,编辑工具和其余应用程序通常使用ID 列举文档中的元素,并不关心元素的实际
意义和各元素彼此之间的关系。
一个ID 类型属性值必须为有效的XML 名称,该名称以字母开头,由字母数字混排的字符和下划线组成,并且其中不带空格。
一个特定的名字不能用作多个标记的ID 属性。若在一个文档中两次使用同一ID 将导致语法分析器返回一个错误信息;另外,
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(87)