### XSL 基础教程第一章

XSL 介绍
XML 的样式表语言 XSL 比 CCS 要复杂得多。
CSS：HTML 的样式表语言
由于 HTML 使用预先确定的标记，因此这些标记的含义都很好理解：<p>元素定义一段，<h1>元素定义一个标题。浏览器知道如何显示这些元素。
使用 CSS 向 HTML 元素增加显示格式是一个简单的过程：很容易告诉浏览器用某种特殊字体或颜色来显示各个元素，浏览器也很容易理解。
XSL：XML 的样式表
由于 XML 不使用预先确定的标记（我们可以根据需要使用任意标记），因此标记的含义并不能被直接理解：<table>可以表示一个 HTML 表格，也可以表示一件家具。由于 XML 的特性，浏览器不知道如何显示一个 XML 文档。
为了显示 XML 文档，必须要有一个机制来描述如何显示文档。这些机制之一是 CSS，但是 XSL（可扩展的样式表语言）是 XML 的首选样式表语言，它要比 HTML 使用的 CSS 复杂得多。
XSL：不仅仅是一个样式表
XSL 包含 3 部分：
一个转换 XML 文档的方法；
一个定义 XML 部分和模式的方法；
一个格式化 XML 文档的方法。
如果对此还不能理解，那么可以先将 XSL 理解成：一种将 XML 转换成 HTML 的语言，一种可以过滤和分类 XML 数据的语言，一种可以对一个 XML 文档的部分进行寻址的语言，一种可以基于数据值格式化 XML 数据的语言（如用红色显示负数），一种向不同设备输出 XML 数据的语言（如屏幕、纸或声音）。
XSL 是一种 WWW 标准
XSL 是 WWW 协会推荐的一种标准。这种语言的前两部分在 1999 年 11 月已经成为 W3C 推荐标准。2000 年，包括 XSL 格式化部分的完整 XSL 推荐标准成为 W3C 的候选标准。
XSL 语言
XSL 实际上包含三种语言，其中最重要的是 XSLT。
XSL 是三种语言的结合体
上面提到，XSL 实际上包含三种语言，具体是：
XSLT 是一种转换 XML 的语言；
XPath 是一种定义 XML 部分或模式的语言；
XSL 格式化对象是一种定义 XML 显示方式的语言。
XSLT 是一种用来将 XML 文档转换成其他类型文档或其它 XML 文档的语言。XPath 是一种对 XML 文档的部分进行寻址的语言。设计 XPath 是要让 XSLT 使用的。格式化是将一个 XSL 转换的结果变成适于读者或听众使用的输出格式的过程。
1999 年 11 月 16 日，XSLT 和 XPath 被作为两个单独的 W3C 推荐标准发布。目前对于 XSL 格式化对象还没有单独的 W3C 文档，但是在 XSL1.0 推荐标准内有一个描述。
XSLT：XSL 转换
XSLT 是 XSL 标准中最重要的部分，它用于将一个 XML 文档转换成另一个 XML 文档或另一种类型的文档，也就是将一个 XML 文档转换成浏览器所能识别的一种格式。这其中之一就是 HTML。通常，XSLT 将每个 XML 元素都转换成一个 HTML 元素。
XSLT 还可以向输出文件中增加全新的元素，或去掉一些元素。它可以重新安排这些元素并对元素进行分类，测试并确定显示哪些元素等等。
描述这种转换过程的一个常用说法是：XSL 用 XSLT 将一个 XML 来源树转换成另一个 XML 结果树（或将一个 XML 源文档转换成另一个 XML 结果文档）。
XSL 如何工作
在转换的过程中，XSLT 用 XPath 来定义源文档中与一个或多个预先确定的模板相匹配的部分。当找到了一个匹配时，XSLT 就将源文档中的匹配部分转换成结果文档；而源文档中不与任何一个模板匹配的部分最终在结果中保持不变。
本文集中介绍 XSLT 和 XPath
本文的大部分章节都集中在 XSLT 和 XPath 上。我们将用 XSLT 来定义 XML 转换，用 XPath 来为转换定义匹配模式。即使 XSL 包含了 3 个不同名称的不同部分，我们仍将使用 XSL 的通用术语。
XSL 浏览器
目前支持 XSL 的浏览器很少，我们将用 Internet Explorer 5.0 来演示 XSL。
Internet Explorer 的 XML 解析器
为了用 XSL 来处理一个 XML 文档，你需要一个带有 XSL 引擎的 XML 解析器。目前，Internet Explorer 5.0 是符合这一条件的唯一浏览器。所以，本文举例中的代码只在 Internet Explorer 5.0 或更高版本中工作。
Internet Explorer 的 XSL 引擎
Internet Explorer 5.0 中的 XSL 并不是 100%的与最新发布的 W3C XSL 标准相吻合。在 XSL 标准完全固定下来之前，Internet Explorer 5 就已经发布了，并且当时的 XSL 标准还是一个工作草稿。但是 Microsoft 已经承诺在下一个版本中解决这个问题。
本文中的例子与正式的 W3C XSL 推荐中的例子只有很小的不同，这些例子很适用于 XSL 的学习。
例子中唯一可见的区别就是 XSL 样式表声明：
这是 W3C XSL 推荐中的标准方式：<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
这是 Internet Explorer 的方式（来自 XSL 工作草稿）：<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
Internet Explorer MSXML
MSXML 2.0 是 IE 5.0 所携带的 XML 解析器的名字，MSXML 2.5 是 Windows 2000 所携带的解析器的名字，MSXML 3.0 是 XML 解析器的最新版本。MSXML3.0 可以从 Microsoft 下载，未来版本的 Internet Explorer 和 Windows 都将携带它。
按照 Microsoft 的说法，MSXML 3.0 与正式的 W3C XSL 标准 100%兼容：“MSXML 3.0 比 MSXML 2.5 有明显的进步：安全的服务器 HTTP 访问，XSLT 和 XPath 的完整执行，到 SAX 的改变（用于 XML 的简单 API），与 W3C 标准更加一致，以及许多臭虫的修复。