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文档其中转换引擎就是比喻中"用力按"过程在具体应用中有专门软件Software来实现这个转换过程名为XML Processor目前已经有很多 Processor 软件Software(下面将详细提到)在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结构树

第 2步:建立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结构树

第 3步:在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"显示结果了流行处理器软件Software有以下几种:

(1).James ClarkXT下载网址:http://www.jclark.com/xml/xt.html

(2).IBMXML for Java软件Software包名为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.xmlhello.xsl放在同目录下面最后用 IE5.0以上版本打开hello.htm就可以看到效果了

<html>

<head>

<script language="JavaScript" for="window" event="onload">

var xmlDoc = 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>

2.3 过程解析

如果你成功看到效果你也许想知道这些代码具体含义我们来详细解说:看hello.xsl文件

<?xml version="1.0" encoding="iso-8859-1"?>

这是标准XML文档首行代码XSLT本身也是XML文档encoding属性用来定义文档使用编码形式iso-8859-1主要支持西欧和北美语言编码如果你想使用简体中文那么就应该写成:

<?xml version="1.0" encoding="GB2312"?>

接下去代码是:

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

这是标准XSLT文件首行代码xsl:stylesheet代码意思是将文档作为个样式表来(stylesheet)处理xmlns:xsl属性是个名字空间声明和XML中名字空间使用思路方法用来防止元素名称重复和混乱其中前缀xsl意思是文档中使用元素遵守W3CXSLT规范标准最后version属性介绍说明样式表只采用XSLT
1.0标准功能这也是目前仅有标准

<xsl:template match="/">

个<xsl:template>元素定义个模板规则属性match="/"介绍说明XML源文档中这个模板规则作用起点"/"是种XPath语法我们在后面将详细讲述这里"/"代表XML结构树根(root)

接下去代码是:

<html>

<head>

<title>First XSLT Example</title>

</head>

<body>

<p><xsl:value-of select="greeting"/></p>

</body>

</html>

介绍说明:当模板规则被触发模板内容就会控制输出结果例子中模板大部分内容由HTML元素和文本构成只有<xsl:value- of>元素是XSLT语法这里<xsl:value-of>作用是拷贝原文档中个节点值到输出文档而select属性则详细指定要处理节点名称这是XPath语法"greeting"意思就是寻找根节点名为greeting元素并用模板来处理这个节点具体就是找到<greeting>元素然后将元素值"hello
world"按模板样式拷贝到输出文件

提示:由于XML文档是严格层级结构(用IE5查看XML文件会看见XML文档类似多级关联菜单)所以我们形象称XML文档为文档树其中每对元素称作树个节点根元素就是根节点

最后关闭所有元素:

</xsl:template>

</xsl:stylesheet>

例子解说完毕你是否想过为什么要用这么复杂思路方法来显示"hello world"呢?

关键不在表面而在于实质:用这种思路方法hello world可以从XML文档中被提取出来并用各种区别XSLT模板处理来输出区别需求文档我们来看看XSLT主要用途:

2.4 XSLT用途

XSLT主要用途就是数据转换应用

由于以XML为基础电子商务广泛普及XSLT作为数据转换角色也越来越重要例如直接将电视新闻数据格式转换成报纸新闻需要数据格式;将股票数据直接转换成图片显示在网页上;对EDI(电子数据交换)数据进行统计排序等等

XSLT是处理类似工作理想工具

Tags:  xmlxslt实例 xslt入门 xslt实例 xslt轻松入门

延伸阅读

最新评论

发表评论