1、XML 实用大全提供下载: http:/交流讨论:http:/ XML 简介 17第 1 章 XML 概览 181.1 什么是 XML .181.1.1 XML 是元标记语言 .181.1.2 XML 描述的是结构和语义,而不是格式化 201.2 为什么开发人员对 XML 感到激动 .231.2.1 设计与特定领域有关的标记语言 .231.2.2 自描述数据 .231.2.3 应用间交换数据 .251.2.4 结构化和集成的数据 .261.3 XML 文档的“生命” .271.3.1 编辑器 271.3.2 语法分析程序和处理程序 .281.3.3 浏览器和其他工具 281.3.4 处理过程总
2、结 28.4 相关技术 301.4.1 超文本标记语言(Hypertext Markup Language) .301.4.2 级联样式单(Cascading Style Sheets) 311.4.3 可扩展的样式语言(Extensible Style Language) 311.4.4 URL 和 URI.321.4.5 XLink 和 XPointer.331.4.6 Unicode 字符集 .341.4.7 如何将这些技术融合在一起 .351.5 本章小结 37第 2 章 XML 应用简介 382.1 什么是 XML 应用程序 382.1.1 化学标记语言(Chemical Marku
3、p Language) .392.1.2 数学标记语言(Mathematical Markup Language) 402.1.3 频道定义格式 462.1.4 经典文学 472.2 用于 XML 的 XML.492.2.1 XSL .492.2.2 XLL502.2.3 DCD 512.3 XML 的后台应用 532.4 本章小结 58第 3 章 第一个 XML 文档 603.1 Hello XML .603.1.1 创建一个简单的 XML 文档 613.1.2 保存 XML 文件 613.1.3 将 XML 文件装入 Web 浏览器 .63.2 考察简单的 XML 文档 643.3 赋于
4、XML 标记以意义 67.4 为 XML 文档编写样式单 .69.5 将样式单附加到 XML 文档上 .713.6 本章小结 73第 4 章 数据的结构化 744.1 检查数据 744.1.1 击球手 754.1.2 投球手 794.1.3 XML 数据的组织 794.2 数据的 XML 化 824.2.1 开始编写文档:XML 声明和根元素 .834.2.2 联赛(League) 、 (分部)Division 和(球队)Team 数据的XML 化 .494.2.3 球员数据的 XML 化 524.2.4 球员统计数据的 XML 化 .534.2.5 将 XML 组装在一起 564.3 XML
5、 格式的优点 714.4 编制样式单以便显示文档 .724.4.1 与样式单连接 734.4.2 为根元素指定样式规则 744.4.3 为标题指定样式规则 .754.4.4 为球员和统计元素指定样式规则 .794.4.5 本节小结 804.5 本章小结 .85第 5 章 属性、空标记和 XSL865.1 属性 865.2 属性与元素的对比 955.2.1 结构化的元数据 .955.2.2 元元数据 995.2.3 有关元数据的说明 1005.2.4 元素更具扩展性 .1005.2.5 使用属性的最佳时机 .1005.3 空标记 .1025.4 XSL .1035.4.1 XSL 样式单模板 .
6、1035.4.2 文档的主体 .1045.4.3 标题 .1065.4.4 联赛、分部和球队 1085.4.5 球员 .1145.4.6 区分投手与击球手 1175.4.7 元素内容与 select 属性 .1255.4.8 CSS 还是 XSL .1295.5 本章小结 130第 6 章 结构完整的 XML 文档 1316.1 XML 文档的组成 1316.2 置标和字符数据 .1326.2.1 注释 .1326.2.2 实体引用 .1346.2.3 CDATA.1356.2.4 标记 .1366.2.5 属性 .1386.3 独立文档中结构完整的 XML1406.4 结构完整的 HTML
7、.1456.4.1 现实的 Web 页面存在的问题 1456.4.2 HTML 整理工具 .1536.5 本章小结 156第 7 章 外文和非罗马文本 .1577.1 Web 上的非罗马文字 157.2 文字、字符集、字体和字形 .1617.2.1 文字的字符集 1617.2.2 字符集的字体 1617.2.3 字符集的输入法 .1617.2.4 操作系统和应用软件 .1627.3 传统字符集 1637.3.1 ASCII 字符集 .1637.3.2 ISO 字符集 1647.3.3 MacRoman 字符集 1667.3.4 Windows ANSI 字符集 .1677.4 Unicode
8、字符集 .1697.4.1 UTF-8 1717.4.2 通用字符系统 1717.5 如何使用 Unicode 编写 XML 1737.5.1 利用字符引用在 XML 文件中插入字符 .1737.5.2 其他字符集与 Unicode 字符集之间的转换 .1737.5.3 如何使用其他字符集编写 XML.1747.6 本章小结 176第二部分 文档类型定义 177第 8 章 文档类型定义和合法性 .1778.1 文档类型定义 1778.2 文档类型声明 1798.3 根据 DTD 的合法性检验 .1828.4 列出元素 1878.5 元素声明 1958.5.1 ANY .1958.5.2 #PC
9、DATA.1958.5.3 子元素列表 .1988.5.4 序列 .2008.5.5 一个或多个子元素 2008.5.6 零或多个子元素 .2018.5.7 零或一个子元素 .2018.5.8 完整的文档和 DTD.2038.5.9 选择 .2148.5.10 带括号的子元素 .2158.5.11 混合内容 .2178.5.12 空元素 2188.6 DTD 中的注释 .2208.7 在文档间共享通用的 DTD.2288.7.1 远程 URL 上的 DTD.2358.7.2 公共的 DTD2368.7.3 内部和外部 DTD 子集 .2378.8 本章小结 241第 9 章 实体和外部 DTD
10、 子集 2429.1 什么是实体? 242.2 内部通用实体 2449.2.1 定义内部通用实体引用 2449.2.2 在 DTD 中使用通用实体引用 .2469.2.3 预定义通用实体引用 .2479.3 外部通用实体 248.4 内部参数实体 2519.5 外部参数实体 253.6 根据片段创建文档 2609.7 结构完整的文档中的实体和 DTD .2749.7.1 内部实体 .2749.7.2 外部实体 .2769.8 本章小结 283第 10 章 DTDs 中的属性声明 28410.1 什么是属性? 28410.2 在 DTD 中声明属性 .28510.3 声明多个属性 28710.4
11、 指定属性的缺省值 28810.4.1 #REQUIRED 28810.4.2 #IMPLIED 28810.4.3 #FIXED28910.5 属性类型 29010.5.1 CDATA 属性类型 .29010.5.2 Enumerated 属性类型 .29010.5.3 NMTOKEN 属性类型 29110.5.4 NMTOKENS 属性类型 29110.5.5 ID 属性类型 .29210.5.6 IDREF 属性类型 29210.5.7 ENTITY 属性类型 .29310.5.8 ENTITIES 属性类型 .29410.5.9 NOTATION 属性类型 29410.6 预定义属性
12、.29610.6.1 xml:space 29610.6.2 xml:lang 29710.7 基于属性的棒球统计数据的 DTD .30010.7.1 在 DTD 中声明 SEASON 的属性 30210.7.2 在 DTD 中声明 DIVISION 和 LEAGUE 属性 .30210.7.3 在 DTD 中声明 TEAM 属性 .30210.7.4 在 DTD 中声明 PLAYER 的属性 .30310.7.5 棒球比赛统计数据示例的完整 DTD.30610.8 本章小结 309第 11 章 嵌入非 XML 数据 31011.1 记号 31011.2 不可析外部实体 .31411.2.1
13、声明不可析实体 .31411.2.2 嵌入不可析实体 .31411.2.3 嵌入多个不可析实体 .31711.3 处理指令 31911.4 DTD 的条件部分 32211.5 本章小结 324第三部分 样式语言 325第 12 章 级联样式单级别 132512.1 什么是 CSS? .32512.2 样式单与文档的链接 .32712.3 选择元素 33112.3.1 成组选择符 .33112.3.2 伪元素 33112.3.3 伪类(pseudo-classe) .33212.3.4 由 ID 来选择 .33512.3.5 上下文的选择符 .33512.3.6 STYLE 特性 33612.4
14、 继承性 .33712.5 级联过程 33912.5.1 import 指令 33912.5.2 !important 声明 33912.5.3 级联顺序 .33912.6 在 CSS 样式单中添加注释 .34112.7 CSS 中的单位 34212.7.1 长度值 34212.7.2 URL 值 .34412.7.3 颜色值 34512.7.4 关键字值 .34612.8 块、内联或列表项元素 .34712.8.1 列表项 35212.8.2 whitespace 属性 35412.9 字体属性 35712.9.1 font-family 属性 35712.9.2 font-style 属性
15、 35812.9.3 font-variant 属性 .35912.9.4 font-weight 属性 .35912.9.5 font-size 属性 36012.9.6 font 简略属性 36212.10 颜色属性 36412.11 背景属性 36512.11.1 background-color 属性 36512.11.2 background-image 属性 36512.11.3 background-repeat 属性 36712.11.4 background-attachment 属性 36812.11.5 background-position 属性 .36912.12 文
16、本属性 37312.12.1 word-spacing 属性 37312.12.2 letter-spacing 属性 37412.12.3 text-decoration 属性 37412.12.4 vertical-align 属性 .37512.12.5 text transform 属性 37612.12.6 text-align 属性 37712.12.7 text-indent 属性 37812.12.8 line-height 属性 37812.13 框属性 .38012.13.1 页边距属性 38012.13.2 边框线属性 38112.13.3 贴边属性 .38412.13.
17、4 大小属性 .38512.13.5 定位属性 .38612.13.6 float 属性 38612.13.7 clear 属性 .38712.14 本章小结 389第 13 章 级联样式单级别 238913.1 CSS2 中有哪些新特点? .38913.1.1 新的伪类 .39013.1.2 新的伪元素 .39013.1.3 媒体类型 .39013.1.4 分页媒体 .39013.1.5 国际化 39013.1.6 可视格式化控制 .39113.1.7 表格 .39113.1.8 生成的内容 .39113.1.9 有声样式单 .39113.1.10 新工具 39113.2 选择元素 3931
18、3.2.1 式样匹配 .39313.2.2 通配符 39413.2.3 后代和子代选择符 39413.2.4 直系同属选择符 .39613.2.5 特性选择符 .39613.2.6 规则 39613.2.7 伪元素 40013.2.8 伪类 .40113.3 格式化页面 .40313.3.1 大小属性 .40313.3.2 页边距属性 .40313.3.3 标记属性 .40313.3.4 页面属性 .40313.3.5 分页符属性 .40413.4 可视格式化 .40513.4.1 显示属性 .40513.4.2 宽度和高度属性 .40713.4.3 overflow 属性 40713.4.4
19、 clip 属性 .40813.4.5 visibility 属性 40813.4.6 cursor 属性 .40913.4.7 相关的颜色属性 .41013.5 框 41213.5.1 轮廓属性 .41213.5.2 定位属性 .41313.6 计数器和自动编号 41713.7 有声样式单 .41913.7.1 说话属性 .42013.7.2 音量属性 .42013.7.3 暂停属性 .42013.7.4 提示属性 .42113.7.5 同期播放属性 42113.7.6 空间属性 .42113.7.7 音质属性 .42213.7.8 话音属性 .42413.8 本章小结 425第 14 章
20、XSL 变换 .42614.1 何为 XSL? 42614.2 XSL 变换概述 42814.2.1 树形结构 .42814.2.2 XSL 样式单文档 43014.2.3 在何处进行 XML 变换 .43114.2.4 如何使用 XT43214.2.5 直接显示带有 XSL 样式单的 XML 文件 .43414.3 XSL 模板 43614.3.1 xsl:apply-templates 元素 .43614.3.2 select 特性 43814.4 使用 xsl:value-of 来计算节点值 .44014.5 使用 xsl:for-each 处理多个元素 44214.6 匹配节点的模式
21、.44414.6.1 匹配根节点 .44414.6.2 匹配元素名 .44514.6.3 使用/字符匹配子节点 .44714.6.4 使用/ 符号匹配子代 44814.6.5 通过 ID 匹配 .44914.6.6 使用 来匹配特性 44914.6.7 使用 comments()来匹配注释 .45114.6.8 使用 pi()来匹配处理指令 .45214.6.9 用 text()来匹配文本节点 45214.6.10 使用“或”操作符| 45314.7 选择节点的表达式 45414.7.1 节点轴 45414.7.2 表达式类型 .46214.8 缺省的模板规则 .47114.8.1 元素的缺省
22、规则 .47114.8.2 文本节点的缺省规则 .47114.8.3 两个缺省规则的含义 .47114.9 决定输出要包含的内容 .47314.9.1 使用特性值模板 .47314.9.2 使用 xsl:element 将元素插入到输出文档中 47514.9.3 使用 xsl:attribute 将特性插入到输出文档中 47614.9.4 定义特性集合 47714.9.5 使用 xsl:pi 生成处理指令 47814.9.6 使用 xsl:comment 生成注释 .47814.9.7 使用 xsl:text 生成文本 47914.10 使用 xsl:copy 复制当前节点 .48014.11
23、 使用 xsl:number 为节点计数 48314.11.1 缺省数值 .48414.11.2 数字到字符串的变换 .48614.12 对输出元素排序 .48814.13 CDATA 和就是一种格式化标记,它使其中的内容变为粗体。是一种语义标记,意味着其中的内容特别重要。是结构标记,指明内容是表中的一个单元。事实上,某些标记可能具有所有这三种意义。标记可同时表示 20 磅的 Helvetica 字体的粗体、第一级标题和页面标题。例如,在 HTML 中,一首歌可能是用定义标题、定义数据、无序的列表和列表项来描述的。但是事实上这些项目没有一件是与音乐有关的。用 HTML 定义的歌曲可能如下:Ho
24、t Copby Jacques Morali Henri Belolo and Victor WillisProducer: Jacques MoraliPublisher: PolyGram RecordsLength: 6:20Written: 978Artist: Village People而在 XML 中,同样的数据可能标记为:Hot CopJacques MoraliHenri BeloloVictor WillisJacques MoraliPolyGram Records6:20978Village People在这个清单中没有使用通用的标记如和,而是使用了具有意义的标记,如、
25、 、和等。这种用法具有许多优点,包括源码易于被人阅读,使人能够看出作者的含义。XML 标记还使非人类的自动机器人易于找出文档中的所有歌曲。在 HTML 中,机器人只能告诉我们这个元素是 dt。机器人不能决定 dt 到底代表一首歌的题目还是定义,抑或只是一些设计者喜爱的缩进文本格式。事实上,单一文档中可以很好地包括带有三种意义的各种 dt 元素。可以选择 XML 的元素名称,以便使其在附加的上下文中具有额外的意义。例如,元素名称可以是数据库的域名。XML 比 HTML 更为灵活而且适用于各种应用,因为有限数目的标记不必用于许多不同的目的。1.2 为什么开发人员对 XML 感到激动XML 使许多只
26、利用 HTML 难以解决的任务变得简单,使只利用 HTML 不可能完成的任务得以完成。因为 XML 是可扩展的,开发人员喜爱 XML 有许多原因。到底是哪个更令人感兴趣,取决于每个人的需要。但有一点是肯定的,一旦用上XML,就可发现,它正是解决许多令人感到棘手的问题的有力工具。本节研究一些令开发人员激动的一般应用。在第 2 章中,还会看到已经用 XML 开发出来的一些特殊应用。1.2.1 设计与特定领域有关的标记语言XML 允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。这就使得该领域中的人们可以交换笔记、数据和信息,而不用担心接收端的人是否有特定的软件来创建数据
27、。特定领域的开发人员甚至可以向本领域外的人发送文档,有相当的理由可以认为,至少接受文档的人能够查看文档的内容。更进一步说,为特别的领域创建标记语言不会产生“病件”(bloatware)或是对于本专业外的人来说产生不必要的复杂性。一般人也许不会对电力工程图感兴趣,但是电力工程师却对此感兴趣。一般人也许不需要在他的 Web 页面中包括乐谱,但是作曲家却要这样做。XML 让电力工程师描述他们的电路图,让作曲家写乐谱,而不会互相干扰。对于浏览器开发商来说,都不需要对特定的领域提供特殊的支持,也不需要提供复杂的插件。这一点现在已经实现了。1.2.2 自描述数据过去 40 年来的大多数计算机数据都丢失了,
28、不是因为自然损害或是备份介质的磨损(虽然这也是一个问题,这个问题在 XML 中也没有解决),而只是因为没有人来写出如何读取这些数据介质和格式的文档。在十年前的 5.25 英寸的软盘上的Lotus 1-2-3 文档在今天的大多数公司内都已经读不出来了。以不常用的格式保存的二进制数据,如 Lotus Jazz 也许会永远地消失了。XML 在基本水平上使用的是非常简单的数据格式。可以用 100的纯 ASCII 文本来书写,也可以用几种其他定义好的格式来书写。ASCII 文本是几乎不会“磨损”的。丢失一些字节甚至是相当多的字节,剩下的数据还是可以读取的。这就与许多格式形成了鲜明的对比,如压缩数据或是串
29、行的 Java 对象,这些数据即使丢失一个字节,剩余的数据也变得不可读取了。从高水平上来说,XML 是自描述的。假设在 23 世纪有一个信息考古学者,他在软盘上发现了如下一大段经过时间的“冲刷”而保存下来的 XML 代码:JudsonMcDaniel2 Feb 1834 9 Dec 1905 即使这个考古学家不熟悉 XML,但假设他可以讲 20 世纪时的英语,那么就可以很好地了解名为 Judson McDaniel 的人,此人出生在 1834 年 2 月 21 日,而死于1905 年 12 月 9 日。事实上,数据中有一些空白或是损坏,还是可以得到这些信息。但对于专有格式的电子表格或是字处理程
30、序的格式,就不是这么回事了。更进一步说,XML 有很好的规格文档。W3C 的 XML 1.0 规范和大量的论文书籍,如本书,都向人们准确地说明如何来阅读 XML 数据。没有什么秘密使得人们发生失误。1.2.3 应用间交换数据由于 XML 是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式。当前正在开发的一种这样的格式是 Open Financial Exchange(开放财务交换,简写为 OFX)格式。OFX 是为个人财务程序,如 Microsoft Money和 Quicken 交换数据而设计的。数据可以在程序间来回交换,还可以与银行、经纪事务所和其他机构交换数据。有关
31、 OFX 的内容将在第 2 章加以讨论。正如上面所讨论的一样,XML 使用的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的限制。XML 的功能是非常强大的,同时对于人类或是计算机程序来说,都容易阅读和编写。因而成为交换语言的首选。使用 XML 而不是专有格式,人们就可以利用任何理解 XML 的工具来处理数据。还可以为不同的目的使用不同的工具。一个程序用来查看而另一程序用来编辑。XML 使用户不必因为数据已经用专有格式编写好了或是接受数据的人只接受专有格式而限制在一个特定的程序上。例如,许多出版商需要用 Microsoft Word 发稿。这就意味着大多数作者必须使用Word,
32、即使他们更愿意使用 WordPerfect 或是 Nisus Writer。因而这就使得其他出版字处理软件的公司陷入困境,除非他们的软件能够读写 Word 文件。由于要想达到这个目的,就得让开发人员反向了解未载入文档的 Word 文件格式,这使得在时间和资源上的投资大增。大多数其他字处理软件具有有限的读写 Word 文件的能力,但是通常都会丢失图形、宏、样式、修订标记和其他重要的特性。问题就在于Word 文档的格式是不公开的专有格式,而且还在不断地变化。这样 Word 就成为最后的胜利者,即使作者更喜爱其他的更简单的程序。如果在 XML 中开发了一种通用的字处理格式,作者们就会使这个程序成为他
33、们的首选程序。1.2.4 结构化和集成的数据XML 对于大型和复杂的文档是理想的,因为数据是结构化的。这不仅使用户可以指定一个定义了文档中的元素的词汇表,而且还可以指定元素之间的关系。例如,如果要将销售客户的地址一起放在 Web 页面上,这就需要有每个客户的电话号码和电子邮件地址。如果向数据库中输入数据,可确保没有漏下的字段。还需要每部书都有一个作者。当没有数据输入时还可提供一个缺省值。XML 也提供客户端的包括机制,可以根据多种来源集成数据并将其作为一个文档来显示。数据还可以马上进行重新排列。数据的各个部分可以根据用户的操作显示或隐藏。当处理大型的信息仓库,比如关系型数据库时是极为有用的。1
34、.3 XML 文档的“生命”从基本上来说,XML 是一种文档格式。它是一系列的关于 XML 文档看起来是什么样子的规则。与 XML 标准的符合程度有两种级别。第一级是结构完整性,第二级是正确性。本书的第一部分向读者介绍如何编写结构完整的文档。而第二部分向读者介绍如何编写具有正确性的文档。HTML 是设计用于 Internet 上和 Web 页面内部的文档格式。正如本书所叙述的,XML 当然也可以用在这些方面。但是 XML 具有更为广泛的适用性。正如前面所讨论的,可用于字处理器的保存文件的格式,可用于不同程序间的数据交换格式,可用作与 Intranet 模板一致化的工具,还可用作以人类可读的形式
35、保存数据的手段。虽然如此,如所有的数据格式一样,XML 在有用之前也需要程序和内容。因而对于数据看起来应该是什么样子的,光了解 XML 本身还是不够的,这不光是一个规范所能解决的问题。用户还需要了解 XML 文档是如何编辑的,处理程序是如何读取 XML 文档并将其读取的信息传送给应用程序的,以及这些应用程序是如何处理数据的。1.3.1 编辑器XML 文档大多数情况下都是用编辑器创建的。编辑器可以是基本的文本编辑器如Notepad(记事本)或是 vi,这些编辑器并不真正理解 XML。另一方面,也可以用所见即所得的编辑器,如 Adobe FrameMaker,这种编辑器可将用户完全隔离于 XML
36、底层格式之外。另外也可以是一个结构化的编辑器,如 JUMBO,它可将XML 文档显示为树状结构。对于最重要的部分,有趣的编辑器并不是太有用,因而本书将注意力集中于用普通的文本编辑器来编写 XML 文档。其他程序也可以创建 XML 文档。例如,本书在讲述设计新的 DTD 的稍后章节中将可看到某些 XML 数据可直接从 FileMaker 的数据库中得出。在这种情况下,数据是先输入到 FileMaker 数据库中的,然后 FileMaker 的计算字段将数据转换为XML。一般来说,XML 与数据库可协同工作得很好。准确地说,我们可在第 23 章“设计新的 XML 应用”中看到这种情况。无论在何种情
37、况下,都是编辑器或其他程序创建了 XML 文档。通常,这一文档是某种计算机硬盘上的实际文件。但也不是必须如此。例如,文档可能是数据库中的记录或是字段,或者可能是从网络上接收来的字节流。1.3.2 语法分析程序和处理程序XML 的语法分析程序(即所谓的 XML 处理程序)读取文档并检查其中包括的XML 是否是结构完整的。它还要确定文档是否合法,虽然这种测试不是必需的。这种测试的详细情况将在本书的第二部分中讲述。如果文档通过了测试,则处理程序就将文档转换为元素的树状结构。1.3.3 浏览器和其他工具最后语法分析程序将树状结构或是树的节点传送给用户端应用程序。这个应用程序可能是浏览器,如 Mozil
38、la,或是其他能够理解如何处理数据的程序。如果这个应用程序是浏览器的话,数据就显示给用户。但是其他程序也可以接受数据。例如,可将数据翻译成数据库的输入、一系列要演奏的乐谱或是要运行的 Java 程序。XML 是非常灵活的,可以用于许多不同的目的。1.3.4 处理过程总结总结一下,首先由一个编辑器创建了 XML 文档。语法分析程序将树状结构传送给浏览器,由浏览器显示出来。图 1-1 显示了这个处理过程。图 1-1 XML 文档的处理流程请注意,所有这些部分都是独立的,互相分离的。将这些部分联系在一起的是XML 文档。改变编辑程序与终端应用程序无关。事实上,很可能在编写文档时就根本不知道最终的应用
39、程序是什么。可能是最终用户来阅读文档,也可能是数据库从中提取数据,甚至还可能是未发明出来的程序,也可能是所有这些情况。文档与读取它的程序是无关的。HTML 也在某种程度上与读写它的程序无关,但是它只适用于浏览器。其他应用,如数据库输入已经不在它的有效范围之内了。例如,HTML 没有提供某种方法来包括所需的内容,如每本书都必须有 ISBN 号码一样。在 XML 中可以包括这个。甚至可以强制安排元素出现的顺序(如第二级标题必须出现在第一级之后)。.4 相关技术XML 并不是在真空中操作的。如果将 XML 用于不只是一种数据格式的话,就需要与多种相关的技术相互作用。这些技术包括为了向后兼容老式的浏览
40、器的HTML、CSS(Cascading Style Sheet,级联样式单)和 XSL(eXtensible Style Languages,可扩展的样式语言)、URL 和 URI、XLL(eXtensible Linking Language,可扩展的链接语言)和 Unicode 字符集。1.4.1 超文本标记语言(Hypertext Markup Language)Mozilla 5.0 和 Internet Explorer 5.0 是首先对 XML 提供支持(虽然并不完全)的浏览器。但是,要使大多数用户升级到这两种浏览器的新版本上来,可能还要花两年的时间。(我的妻子 Beth 在 1
41、999 年还在使用 Netscape 1.1。)因而在今后一段时间内,还需要将 XML 内容转化为经典的 HTML。因而,在转向 XML 之前,对使用 HTML 还不应感到别扭。用户不必完全成为一个时髦的图形设计者,但是应该了解如何将一个页面与另一个页面链接起来,了解如何在文档中包括图像,如何使文本变成粗体等等。由于 HTML 是 XML 的最普通的输出格式,所以对 HTML 了解得越多,也就越容易了解如何创建所需的效果。另一方面,如果已经熟悉了利用表格或是单像素的 GIF 来安排页面上的对象,或是如果开始借助于画出草图而不是借助于内容来创建 Web 站点的话,那么也就必须要忘记某些坏的习惯。正如前面所讨论的一样,XML 将文档的内容与文档的外观相分离。首先开发内容,然后再用样式单将格式附加其上。将内容与样式分开是非常有效的技术,这既改善了文档内容也改善了文档外观。除此之外,还允许作者和设计者更加互相独立地工作。但是,对于设计 Web 站点来说,确实需要有不同的思路,如果涉及多人的话,或许要利用不同的项目管理技术。