• 热门标签

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

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

字符数据就是任何不是标记的文本,它是元素或属性值的文本内容。
小于号和&符号是标记分隔符,因此它们绝不能以字符串的形式出现在字符数据中
(C D ATA部分除外,这一点我们将在后面提到)。如果这些字符是字符数据所必需的,它们必需
使用实体引用& 或& l t ;来代替。这两个替代物是X M L规范定义的5个类似字符串中的一部分,
而且在所有兼容X M L的解析器中都得到实现(在后面的2 . 6节“字符引用和实体引用”中我们将
第2章XML 语法使用29
下载
了解到更多的信息)。
这里,我们需要再次提醒大家,由于X M L的目的是在全球使用,所以文本是指统一代码,
而不仅仅是A S C I I码(参见本章前面的关于字符的部分)。
现在,我们来讨论属性的问题。
2.5 属性
如果说元素是XML中名词,那么属性就是这种语言的形容词。
在很多情况下,我们会希望将某些信息附着在元素上,它们与元素本身包含的信息内容有
所不同。我们利用属性( a t t r i b u t e)来做到这一点,它们都包括一个名称-值组合,使用的格式有
如下两种形式:
属性值必需是分隔开的字符串(字符串规则的要求),其中可能包含实体引用、字符引用
(本章稍候将解释),以及/或文本字符。但是,正如我们刚才解释的那样,任何一个受保护的标
记字符(<和&)都不能简单地在属性值中当作字符使用—它们必须用&lt; 或&amp; 实体引用
来替代。
H T M L允许数字化的属性,例如<IMG WIDTH=300 . . . >;或者不分隔的属性,比如< P
ALIGN=LEFT>—但这两种情况在XML中都不允许存在。
在起始标记或空标记中属性只允许有一个实例存在。例如,下面的例子在X M L当中就是非
法的,因为s r c在一个标记中出现了两次:
这种限制极大地简化了X M L解析器对属性的处理。
正如我们在前面暗示的,起始标记和空标记可能在标记中包含属性。例如,回到我们前面
提到的关于书本、盒子、纸箱和卡车的例子,如果我们希望给每个运送书本的纸箱编上一个号
码的话,可以使用如下属性:
程序清单2 - 4
在这个例子中,属性名称是“ n u m b e r”,相应元素起始标记中的值为“ 0 - 6 6 6 - 4 2 - 1”和“ 0 -
6 6 6 - 4 2 - 2”。注意两个合法的字符串分隔符( '和")在本例中都被使用了。
同样,我们在前面提到的< t e x t f i l e >例子中使用的“ < E O F / >”空元素标记也可能包含原始文
本文件文件尾字符的十六进制值:
30使用XML 高级编程
下载
在本例中,属性的名称为“ c h a r”而值为“ 1 A”(即M S - D O S时代的C t r l - Z)。
除了你可以自行定义的属性外,还有两个在X M L中起到特定作用的特殊属性。
2.5.1 特殊属性
在XML 1.0推荐标准中定义了两个特殊的属性: x m l : s p a c e和x m l : l a n g。
X M L文档的作者可以使用这些属性向X M L应用程序(例如,浏览器)传递某种信号。这两
种属性都使用X M L命名空间的语法,即一个命名空间的前缀(“x m l”)紧跟一个冒号( :),然后
是属性名称(“s p a c e”和“l a n g”)。在第7章我们将了解到关于命名空间的更多信息。
1. xml:space属性
这个属性之所以存在,是因为H T M L的< p r e >标记被广泛使用以保持文本格式,其中包括任
何嵌入的空白字符。但是,缺省情况下,使用X M L的应用程序在特定元素中可能不保留空白部
分,这取决于它们的目的。
X M L文档的作者不会依赖于应用程序的默认行为,而是使用x m l : s p a c e属性来告知应用程序
它应该保留空白部分(虽然应用程序对于此信号的实际响应是由应用程序本身定义的—针对
这一问题X M L推荐标准中没有任何要求)。
该属性的值将被应用到元素及其所有子元素中—而不仅仅是带有x m l : s p a c e属性的元素。
这一点与X M L对属性的通常处理方式不太一致,但这一例外确实还是必要的。
如果使用的是带校验的解析器, x m l : s p a c e属性被限制为只能使用两个特定值:
“p r e s e r v e”和“d e f a u l t”—其他任何值都无效(在第3章中讨论D T D时我们会得到更
多信息)。
下面让我们看一看另一个特殊属性。
2. xml:lang属性
这个属性之所以存在,是出于X M L国际化设计目标的需要。统一代码的使用只是为其他人
类语言使用的字符提供了一种标准的编码方法—统一代码可以说是在为文本的显示做着无声
无息的贡献(在其中包含一些特殊的显示字符和用于显示带有二义性的犹太语文本的“ B I D I”
算法,以及用于组成亚洲字符的途径)。此外,它还包含了其他一些针对语言问题的考虑:字符
和符号的排序;如何分隔字符以便于全文本索引;连字处理;特定性别的代名词或短语。
如果使用的是带验证的解析器, x m l : l a n g属性(和其他属性一样)都必须在D T D(在第3章
可以了解到更多的有关信息)中做出声明。此外,在这种情况下,该属性只能取如下几种值:
三类语言代码中的一种:
• ISO 639—h t t p : / / s u n s i t e . b e r k e l e y. e d u / a m h e r / i s o _ 6 3 9 . h t m l
• IETF的R F C 1 7 6 6—h t t p : / / w w w. i e t f . o rg / r f c / r f c 1 7 6 6 . t x t
• 用户定义的语言代码
ISO 3166国家代码—h t t p : / / s u n s i t e . b e r k e l e y. e d u / a m h e r / i s o _ 3 1 6 6 . h t m l
以下几种基本格式之一:
• 两个字母的ISO 639语言代码;例如,法语或日语可以表示为
第2章XML 语法使用31
下载
• 两个字母的国家代码紧跟一个或多个子代码。如果存在第一个子代码而且包含两个字母,
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(13)