• 热门标签

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

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

那么这些字符必须是ISO 3166国家码中的一员(见下面的前两个例子)。另外,子代码可
以用来描述语言的书写符号、语调、地方变体等等。(见下面的后五个例子);例如,像
英语(“e n”)和挪威语(“n o”)这样的语言变量,或者那些用于阿塞拜疆语的书写字母变
体:
程序清单2 - 5
• 字符串“I -”或“i -”,紧跟3个或8个字母、注册过的I A N A语言代码(h t t p : / / w w w. i s i . e d u / i n -
n o t e s / i a n a / a s s i g n m e n t s / l a n g u a g e s);例如,美国本地的方言,C h e r o k e e:
• 字符串“ X -”或“ x -”,紧跟一个用户定义的语言代码;例如,由Star T r e k发明的语言
K l i n g o n可以表示为:
用户定义的语言代码必需以“ x -”或“ X -”开头,以避免可能与注册的I A N A代码冲
突。
在I n t e r n e t用户群中,有一种固定的习惯,就是用小写字母表示语言代码,用大写字母表示
国家代码。即使这些属性值并非大小写敏感(这一点与大多数X M L命名不同),坚持这一习惯还
是相当必要的(记住X M L的设计目的是简化已有的I n t e r n e t协议的使用)。
下面的小段程序演示几种可能出现的情况:
程序清单2 - 6
一个应用程序(或样式表)可能使用x m l : l a n g属性根据一些用户的语言配置设置决定显示哪
32使用XML 高级编程
下载
一个< q u e s t i o n >标记。
和x m l : s p a c e属性一样, x m l : l a n g属性的值不仅应用于包含该属性的元素,而且也应用于它所
有的子元素和其他属性。此外,应用程序没有义务去关心x m l : l a n g属性的情况。类似于x m l : s p a c e
属性的一点是它可能对X M L数据的样式化非常有帮助, x m l : l a n g属性可能是几乎所有国际化文
档所必需的功能。
这里我们还需要提一提对该功能的其他描述方法:大多数处理多语言文本的用户喜欢把
这种对内容的处理叫做“语言标记”。当然,这会与X M L术语相冲突:因为x m l : l a n g属性
并不是一个X M L标记,所以,当我们讨论多语言X M L文本时应当注意过滤和转化这种概
念。
现在我们已经覆盖了属性和元素的语法,即X M L的基本组成,你应该已经能够建立自己的
简单的X M L文档。但是在我们深入讨论另一个关键主题—实体之前,让我们先简单地了解两
个问题,在你用自己的应用程序处理文档之前,这是必需掌握的内容:空白和行尾处理。
2.5.2 空白
在讨论x m l : s p a c e属性时,我们使用了还没有真正介绍的术语“空白”。但不管是对于人类语
言还是计算机语言来说,空白确实一个非常重要的语言概念。在X M L数据中,只有4个字符可以
作为空白使用(参见表2 - 2)。
无论如何,制表位占用的位置都只不会
超过一个字符,所以它们中的每一个都可以
简单地看作是一个字符。同样,任何由L F和/
或C R隐含的格式也是交给应用程序和/或样
式单处理。
同时,统一代码定义了许多不同种类的
空格,但其中没有一个能够成为X M L中的空白。
X M L规范要求X M L解析器将所有的字符,包括所有的空白字符,传递给应用程序。如果使
用的是需要验证的解析器,当空白字符出现在元素内容中时(也就是说这些空白字符是元素字
符数据的一部分),它会要求通知应用程序。所以,负责处理空白的总是应用程序。
X M L处理空白的规则非常简单:解析器会保留内容中所有的空白字符并不加修改地传递
给应用程序,但元素标记和属性值中的空白会被删除。
在书写S G M L和H T M L文档时,标记的缩进是非常常见的做法,但在处理文档时, H T M L浏
览器只会留下单词和文本中其他可识别单元之间的一个空白字符,即便是在文档内容中也是如
此。这就意味着在书写文档时,作者可以根据自己的需要添加任意多的空白以便使文档更易于
阅读并突出文档的结构,但是在文档处理时这一切都将失效。此外,不同的浏览器对于空白的
删除办法有不同的缺省规则,许多H T M L作者必须使用< p r e >标记、& n b s p ;实体和/或表格标记来
确定文本的空白部分。X M L的设计目的就是简化H T M L的处理办法以及它在空白处理方面自相
矛盾的做法,同时避免S M G L针对空白的复杂规则。
第2章XML 语法使用33
下载
表2 - 2
字符值(十六进制) 描述
0 9 水平制表( H T)
0 A 换行(L F)
0 D 回车(C R)
2 0 A S C I I码中的空格字符
在H T M L中,标记间的空白通常会被H T M L浏览器所忽略。S G M L在决定是否保留“由标
记产生的”空白时有一大堆复杂的规则—但不论如何,这些规则从未非常清晰或简明。
现在,让我们看一看X M L是如何处理文档中的行尾的。
2.5.3 行尾的处理
X M L数据对象经常存储在离散的计算机文件当中,它们被分割为若干个文本“行”。在四个
X M L空白字符当中有两个是标准的A S C I I码行尾控制字符。正如我们前面提到的,在用来表示
行尾时,有这两个字符的三种常见组合: C R - L F,只有L F,以及只有C R。
为了简化X M L应用程序的编码, X M L解析器需要将所有的行尾字符串转换为单个L F(换
行)字符。自然,这会让U n i x编程者感到非常高兴,而让许多M S - Wi n d o w s的开发人员怨声
载道( M a c O S用户已经适应了处理多种行尾字符串)。Tim Bray 曾经提出过一些折衷办法
(主要是考虑到M S - Wi n d o w s的市场份额),但结果是X M L仍然要求使用U n i x风格的行尾字
符。
在了解了如何处理空白和行尾之后,让我们着手正确解决字符和实体引用的问题。
2.6 字符引用和实体引用
与之前的S G M L和H T M L一样,X M L为显示非A S C I I码字符集中的字符提供了两种方法:
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(14)