• 热门标签

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

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

要理解H T M L和X M L之间的差异,最重要的是理解它们共同的发展根源: S G M L。
1. HTML不是X M L
S G M L是通用标记语言标准( Standard Generalized Markup Language)的缩写。S G M L是第
一个被广泛使用的标记语言系统,如今在许多商业领域仍然广泛使用,特别是需要频繁处理文
档的领域(例如:出版公司)。与H T M L这种纯粹的标记语言不同, S G M L实际上是一种定义标
记语言的方式。S G M L的这一特征与X M L非常类似,但是S G M L嵌套标记和定义信息的方式更加
灵活。H T M L是一种特殊的S G M L实现,它遵守S G M L的语法规则,但是它包含允许在H T M L文
档中出现的特定的元素和属性定义。实际上,有一个S G M L的D T D(文档类型定义)描述了
H T M L的词汇表和规则。地址h t t p : / / w w w. w 3 . o rg / T R / h t m l 4 0 / s g m l / d t d . h t m l提供了这个D T D的完整
内容。
第5章文档对象模型使用117 下载
另一方面, X M L是S G M L的直接子集。X M L设计的主要目标是创建一种能够保持S G M L灵
活性但更加易于解析的标记定义语言。因此,许多在S G M L中有效的结构对于X M L文档来说是
无效的(因此H T M L也不是有效的X M L文档)。
2. HTML DOM存在的问题
就HTML DOM为开发人员提供的访问H T M L文档内容的方式而言,它不是十分灵活。特别
是由于它要支持被非正式地称为“ DOM Level 0 ”的一组特征—Internet Explorer 3.0 和
Netscape 3.0中实现的功能,它是在标准化用于定义H T M L页面行为的对象模型之前提出的。仅
仅为了向后兼容, HTML DOM必须实现一些功能。另外, HTML DOM支持S G M L的特殊实现
(依赖于是否存在用于说明文档可能布局的预定义D T D)。
3. Internet的未来:X H T M L
W 3 C正在研究一个关于X M L实现的建议—X H T M L。它将遵守X M L的所有语法规则(正
确嵌套的元素,引号包含的属性,等等),同时它也符合H T M L的词汇表(可用的元素和属性,
以及它们之间的关系)。虽然目前尚未出现专门支持X H T M L的浏览器,但是H T M L解析器和
X M L解析器都能够解析正确的X H T M L文档。当你编写H T M L时,最好遵守以下规则,使得文档
也能够被X H T M L的规则正确解析:
• 文档必须是格式正规的,所有元素必须正确结束(每个< TA G >必须有对应的< / TA G >,或
者对于空元素,必须在起始标记的末尾增加“ /”以表示结束)。
• 元素必须正确嵌套—即:每个结束标记必须作为最近的处于打开状态的标记的结束符
(不允许交错)。
• 元素和属性名称必须是小写的。
• 空元素必须有结束标记,或者以“ /”结尾的起始标记。
• 属性-值对必须显式定义。
• 脚本元素和样式元素应该包含在C D ATA部分,以免被错误地解析。
• id属性应该用于保存元素标识符。
下面我们详细说明这些规则。
(1) 文档必须是格式正规的,所有元素必须正确结束,元素必须正确嵌套
H T M L的某些元素不需要显式结束,例如:段落元素< P >。解析器通过检查后面的元素判断
段落元素应该在何处结束。例如,以下H T M L片段在X H T M L中是无效的:
在X H T M L中,应该使用以下代码:
(2) 元素和属性名称必须是小写的
X M L是区分大小写的,它将仅仅大小写不同的标记视为不同的标记。XHTML DTD规定所
有元素和属性都应该使用小写标记, X H T M L文档必须遵守这条规则。
因此,对于以下代码:
118使用XML 高级编程
下载
应该改为:
注意,我们在标记结尾增加了斜杠。这就是下一条规则。
(3) 空元素必须有结束标记,或者在起始标记末尾增加“ /”
在X M L中,所有元素都必须是闭合的;如果某个元素定义为E M P T Y(它只可能包含属性,
而不会有其他相关的信息),它可以以独立的结束标记结束,或者在起始标记的末尾增加斜杠。
当然,在H T M L中允许某些元素不指定结束标记,例如< P >—遇到的下一个起始标记意味着前
一个标记块的结束。为了尽可能与以前的浏览器兼容,应该使用独立的结束标记表示整个标记
的结束,而不应该使用带斜杠的起始标记—有些浏览器不能正确地解析末尾的斜杠。
(4) 属性-值对必须显式定义
如果元素有缺省的属性,指定该属性的值时必须包含属性的名称。
以下代码:
应该改为:
(5) 脚本元素和样式元素应该包含在C D ATA部分中,以免被错误地解析
由于s c r i p t和s t y l e元素在XHTML DTD中被声明为# P C D ATA元素,因此解析器会将<和&视
作标记的开始。为了避免这种误会, s c r i p t和s t y l e元素应该包含在C D ATA部分中,使它们能够直
接包括非转义文本。
以下代码:
应该改为:
(6) id属性应该用于保存元素标识符
在XHTML DTD中,i d属性的类型是I D;因此,应该使用i d属性而不是n a m e属性标识元素。
在将来的X H T M L实现中,n a m e属性将被逐步淘汰。
由于X H T M L是一种正在形成的标准,目前许多可视化的H T M L编辑工具都不支持这些规则,
因此如果使用它们编辑文档,很可能无意中破坏X H T M L文档的正确性。在你创建X H T M L文档
时,要牢记这一事实。当你对编辑工具表示怀疑时,最好使用文本编辑器修改文档,而不要使
用F r o n t P a g e或Microsoft Visual InterDev等工具。
谨遵这些建议,你将保证你的文档与未来转向X H T M L的浏览器最大限度的兼容。另外,你
所创建的X H T M L文档可能会以M I M E类型的H T M L或X M L的形式发送给客户端,使得客户端在
第5章文档对象模型使用119 下载
文档的显示和操作上拥有最大程度的灵活性。客户端可以直接使用XML DOM操作X H T M L文档
的内容。
5.2 使用DOM
我们已经讨论过D O M是如何结构化的,它将X M L文档转化为可以通过程序访问的节点树。
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(50)