### XSLT 轻松入门第二章：XSLT 的实例

2. XSLT 的实例
2.1 XSLT 如何转换 XML
2.2 一个实例
2.3 过程解析
2.4 XSLT 的用途
2.1 XSLT 如何转换 XML
我们打个有趣的比方，你玩过橡皮泥吧，用不同的模子按上去，就可以做出需要的形状。如果我们假设 XML 数据文档是一块大橡皮泥，XSLT 就象是一个模子，用力一按，就做出需要的形状来---符合不同需要的 HTML 文档。
我们将 XML 原文档输入，用 XSL 作为模板，通过转换引擎，最终输出需要的 HTML 文档。其中的转换引擎就是比喻中"用力一按"的过程。在具体应用中，有专门的软件来实现这个转换过程，名为 XML Processor。目前已经有很多 Processor 软件(下面将详细提到)，在 IE5.5 中也已经内嵌了 XML Processor。

2.2 一个实例

现在我们来看一个简单的XSLT实际应用例子，获得一些感官上的认识。很多网页设计师看到类似HTML的代码才会放心，代码是那样的亲切和熟悉。

例子1: "Hello, world!"
hello world作为第一个教程已经是程序语言中的惯例了。我们也遵守这个惯例，看看如何利用XSLT来显示"hello world"。虽然这个例子没有什么实际用途，但是请大家不要急，后面还有更详细的例子。
第一步：建立要输入XML文档hello.xml。

<?xml version="1.0" encoding="iso-8859-1"?>
<greeting>Hello, world!</greeting>

这是一个很简单XML文档，只包含一个节点的XML结构树。
第二步：建立XSLT文档hello.xsl。提示：默认的XSLT文件的后缀名为.xsl。

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>First XSLT example</title>
</head>
<body>
<p><xsl:value-of select="greeting"/></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

你现在可以用IE5.0以上版本浏览器打开这个hello.xsl文件，看到XSL的结构树。
第三步：在XML中调用这个XSL文件。修改hello.xml的代码为：

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="hello.xsl"?>
<greeting>Hello, world!</greeting>

ok,到这一步原理上已经完成了所有的代码，接下来只要用一个XSLT的处理器(XML Processor)来执行hello.xml就可以看到"hello
world"的显示结果了。流行的处理器软件有以下几种：
(1).James Clark的XT。下载网址：http://www.jclark.com/xml/xt.html
(2).IBM的XML for Java软件包，名为LotusXSL。下载网址：www.alphaworks.ibm.com/tech/xml4j
(3).Saxon。下载网址：http://www.wrox.com
(4).微软的MSXML3。下载网址：http://www.microsoft.com/xml

有网友要问，我想在浏览器中看到"hello world"的效果应该怎么做？在微软的IE5.5内嵌了MSXML3解释器，你可以用IE5.5打开hello.xml文件，就可以看到结果。如果只看到XML结构树，不是单独的"hello
world"字样，说明你的浏览器没有安装MSXML3版本。
如果没有安装又想看效果怎么办？那还是用我们在XML教程中的老办法，采用JS实现。(这已经超出了本文要讲的范围，但为了更加直观，便于理解，我们在这里提供实例代码。)下面是一种实现的代码，可以保存为hello.htm，和上面的hello.xml，hello.xsl放在同一目录下面。最后用IE5.0以上版本打开hello.htm就可以看到效果了。

<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("hello.xml");
nodes = xmlDoc.documentElement.childNodes;
greeting.innerText = nodes.item(0).text;
</script>
<title>First XSLT Example</title>
</head>
<body bgcolor="#FFFFFF">
<span id="greeting"></span><br>
</body>
</html>