`
persistC
  • 浏览: 73535 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第二章: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>

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的意思是文档中使用的元素遵守W3C的XSLT规范。最后的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是处理类似工作的理想工具。
分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    XSLT入门教程

    在“XSLT轻松入门第二章:XSLT的实例”中,你将看到实际的转换示例,这些例子将帮助你理解如何定义模板、应用模板以及如何处理XML文档的不同部分。这部分可能会包含如何创建简单的文本输出,如何转换元素和属性,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    Beginning XSLT and XPath Transforming XML Documents and Data

    ##### 第二章:XPath简介 - **XPath语法**:讲解XPath的基础语法,如路径表达式、节点测试等。 - **选择节点**:演示如何使用XPath选择文档中的特定节点或节点集。 - **函数**:介绍XPath内置的一些函数,如`string...

    XSL 中文教程大全

    - **XSLT轻松入门第二章:XSLT的实例.mht**:实例教学是学习XSLT的重要环节,通过实际例子了解如何编写转换规则。 - **XSLT的处理模型(10).mht**:可能涉及更复杂的转换案例,如条件判断、循环、模板的调用等。 ...

    Beginning XSLT 2.0 From Novice to Professional

    第二部分则通过具体的实例来演示如何将理论知识应用于实际问题解决中。书中每个章节都包含了详尽的步骤指导和代码示例,所有这些例子和练习都围绕着一个有趣的主题——将电视节目列表在线发布。通过这种方式,读者...

    java and xslt

    第二章“XSLT Part 1--The Basics”是对XSLT基础知识的详细介绍。从XSLT的概念引入,到转换过程的解析,再到具体的XSLT实例演示,作者一步步引导读者理解XSLT的核心机制。通过一个使用XHTML的例子,展现了XSLT在实际...

    Visual Basic 2010 入门经典(高清版)

    第1章:欢迎使用Visual Basic 2010** - **Visual Basic 2010简介**:介绍了Visual Basic 2010的历史背景和发展历程。 - **开发环境**:详细讲解了如何安装Visual Studio 2010以及设置开发环境。 - **第一个程序*...

    Java & XML

    《Java & XML》第二版由Brett McLaughlin编写,出版社为O'Reilly Media,出版于2001年9月。本书全面覆盖了Java应用程序如何高效地利用XML进行数据处理、交换以及Web服务开发等方面的内容。该书除了对XML的基础知识...

    Java 2 Core Language Little Black Book.pdf

    - **第6章:文件与流**:介绍了文件输入输出操作的基本原理,包括文件流、字符流等概念,并提供了实例代码。 - **第7章:Java数据库连接(JDBC)**:详细说明了如何利用JDBC与数据库进行交互,包括建立连接、执行SQL...

    新J2EE Tutorial第四章

    ### 新J2EE Tutorial第四章:Java API for XML Processing (JAXP) #### 知识点一:JAXP概述 - **定义**:Java API for XML Processing (JAXP) 是一组API,用于帮助Java应用程序处理XML数据。它不仅支持SAX(Simple...

    轻松搞定XML

    - **第二章**:通过实践操作让读者快速理解XML文档的创建和显示过程。 - **第二篇:构建XML文档**(第三章至第六章) - **第三章**和**第四章**:讲解如何构建格式正确的XML文档。 - **第五章**和**第六章**:...

Global site tag (gtag.js) - Google Analytics