xml实用教程:第8章 XSLT、XPath转换XML文件

上传人:博****1 文档编号:558282066 上传时间:2023-04-17 格式:DOC 页数:39 大小:391.50KB
返回 下载 相关 举报
xml实用教程:第8章 XSLT、XPath转换XML文件_第1页
第1页 / 共39页
xml实用教程:第8章 XSLT、XPath转换XML文件_第2页
第2页 / 共39页
xml实用教程:第8章 XSLT、XPath转换XML文件_第3页
第3页 / 共39页
xml实用教程:第8章 XSLT、XPath转换XML文件_第4页
第4页 / 共39页
xml实用教程:第8章 XSLT、XPath转换XML文件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《xml实用教程:第8章 XSLT、XPath转换XML文件》由会员分享,可在线阅读,更多相关《xml实用教程:第8章 XSLT、XPath转换XML文件(39页珍藏版)》请在金锄头文库上搜索。

1、第8章 XSL转换返回主页上一章 下一章教学提示:XSL的目的就是为生成XML文档提供一个功能强大而又容易使用的样式语法。实际上XSL分为XSL转换(XSL Transformation,XSLT)和格式化对象(Formatting Object,FO)。XSLT是一种专门用来转换XML文档的语言。它将一个XML文档(输入或源文档)转换为另一篇XML文档(输出或结果文档)。XSLT只是一种转换机制,FO用来描述如何对文档进行格式化。本章主要介绍XSLT的基础知识,XSLT中使用的到XML元素,模板等概念,以及综合运用XSLT将XML转换成HTML的实例。教学目标:理解XSL的一些基本概念,明白

2、XSL的结构。了解XPath在XSLT中所起的用途。掌握XSLT转换语言的基础知识,熟悉XSLT所使用的元素、模板、函数等,通过具体实例的学习,学会综合运用XSLT编写转换模板。8.1 XSL概述8.2 XSL基础8.3 XSLT转换语言8.4 XSLT模板体8.5使用XML Spy建立XSLT文档小结习题写字版绘图板进入Editplus8.1 XSL概述 本章开头 下一节可扩展的样式表语言(eXtensible Stylesheet Language,XSL)最早由W3C(World Wide Web Consortium)于1999年提出。它定义了如何转换和表示XML文档。比CSS功能要强

3、大得多。XSL能够向输出文件里添加新的元素或者移动元素,也能够重新排列或者索引数据,它可以检测并决定哪些元素被显示,显示多少等。它使用XPath匹配结点。把一个XML文档转换为另一个不同的文档。得到的文档可以是XML、HTML、无格式文本或任何其他基于文本的文档。XSL的第二部分是XSL格式化对象。格式化对象提供了另一种方式,来格式化显示XML文档,以及把样式应用到XML文档中。8.1.1 XSL的意义我们已经知道,XML是一种计算机程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:

4、将数据和表示形式分离。就像天气预报的信息可以显示在电视、手机或者其它不同设备上一样,XML的显示或表现形式可以是多样的。 在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。 为了使数据便于人们的阅读理解,需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,必须能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。8.1.2

5、XSLT和CSS的比较 CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是: CSS不能重新排序文档中的元素; CSS不能判断和控制哪个元素被显示,哪个不被显示; CSS不能统计计算元素中的数据; 换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。因此,常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。表8.1 CSS与XS

6、LT的比较CSSXSLT适用在HTML可以不行适用在XHTML可以可以适用在XML可以可以使用的语法CSS样式语法XML语法是否是转换语言不是是8.1.3 浏览器对XSL的支持为了用XSL来处理一个XML文档,需要一个带有XSL引擎的XML处理器。包含原始数据的XML文档和用来转换该文档的XSLT文档。XSLT处理器把XSLT文档的规则应用到XML文档从而输出XHTML、WML、SVG或者其它任何XML格式的第3个文档。本文举例中的代码只在InternetExplorer5.0或更高版本中工作。Internet Explorer 5.0中的XSL引擎并不是100%的与最新发布的W3C XSL标

7、准相吻合。在XSL标准完全固定下来之前,Internet Explorer 5就已经发布了,并且当时的XSL标准还是一个工作草稿。MSXML 2.0是IE 5.0所携带的XML解析器,MSXML 2.5是Windows 2000所携带的解析器,MSXML 3.0是XML解析器的较高版本。微软的IE6.0内嵌了最新的MSXML4解析器。微软的解析器可以从微软的网站上下载,未来版本的Internet Explorer和Windows都将携带XML解析器。更多信息请看:http:/ XSLT标准制订者之一James Clark开发的XT。下载网址:http:/ IBM的XML for Java软件包

8、,名为LotusXSL。下载网址: Saxon。下载网址:http:/ 微软的MSXML4.0。下载网址:http:/ 8.2 XSL基础 上一节 下一节 本章开头XSL定义可用于XML文档的格式化或表示过程。由于XSL内容很多,包括XSLT、XPath和XSL-FO等,这可能会给XSL初学者带来困惑。下面首先介绍一些有关XSL基础知识。8.2.1 XSL的组成XSL主要由两部分组成:第一部分是XSLT(XSL Transformation)转化XML文档,可以把XML文档从一种格式转换为另一种格式。它使用XPath匹配节点,把一个XML文档转换为另一个不同的文档。得到的文档可以是XML、HT

9、ML、无格式文本或任何其他基于文本的文档。XSL的第二部分是XSL格式化对象(Formatting Object)。格式化对象提供了CSS的另一种方式,来格式化XML文档,以及把样式应用到XML文档上。因此,XSL在转换XML文档时分为明显的两个过程,首先转换文档结构;其次将文档格式化输出。这两步可以分离开来并单独处理,XSL在发展过程中由此也逐渐分裂为XSLT(结构转换)和XSL-FO(Formatting Objects,格式化输出)两种分支语言,其中XSL-FO的作用就类似CSS在HTML中的作用。而本章重点讨论的是第一步的转换过程,也就是XSLT。8.2.2 XSLT简介XSLT提供一

10、套规则,用于将一组元素描述的XML数据转换为另一组元素描述的文档,或者是将该数据转换为一种自定义的文本格式。如员工的数据XML文件,通过XSLT转换,在公司的网站中会以HTML的格式输出显示,而对于会计则只需要转换成自定义的文本格式员工数据就可以。XSLT把XML文档转换为完全不同的输出。这样可以把数据内容存储在XML文档中,然后通过各种媒体将其输出到各种介质中:无线电、打印、语音等格式。当数据发生变化时,只需要修改源XML文档,不需要在多处重复相同的修改工作。通常情况下,XSLT用于将XML文档转换为HTML,目的是可以在浏览器中进行显示。最简单的XSLT应用情况首先涉及到两个文档:包含原始

11、数据的XML文档和用来转换该文档的XSLT转换文档。将XML原文档输入,处理器根据XSLT文档作为模板进行转换,最终输出需要的文档。图8.1 使用XSL转换XML文档XSLT的一些可能的应用包括: 以查看为目的添加元素。如向XML格式的订单中添加公司标志或发送者的地址。 从现在内容创建新的内容。如创建目录。 从XML文档中提取信息。如向管理人员提供详细的信息,对普通员工提供有限的信息。 在不同的XML字典或模型之间进行转换。如将公司专用的文档转换为符合业界标准的文档。 将XML文档转换为HTML,用以实现与现有浏览器之间的兼容。 有关XSLT的语法规则,将在本章后续部分详细介绍。8.2.3 X

12、Path简介XPath是XSLT的重要组成部分。它是一种专门用来在XML文档中查找信息的语言。XPath隶属XSLT,因此通常会将XSLT语法和XPath语法混在一起阐述。可以这样来解释:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。在XSLT中, XPath表达式返回4种类型值:节点集合(node-set)、布尔值(Boolean)、数字和字符串。XSLT元素通常把XPath 表达式当作属性值,采用计算表达式的结果。基本上XSLT的最常规用法是返回节点集合或者字符串,具体取决于有关的元素定义。

13、比如, 定义了当前节点上下文环境内针对节点的模板。在这种情况之下,XPath表达式chapter即可返回节点集合作为以后XSL函数可用的新的上下文。那么在模板内的代码中,XPath表达式把当前上下文中任何节点的原始内容以字符串的形式返回。1.节点导航XPath导航的外观和行为完全和文件系统导航一模一样。斜线分隔父子节点:chapter/title代表只在当前上下文的节点内直接检索节点。与常用来进出目录层次的文件系统语法类似,在XPath中,即可检索节点的父节点:./title会指向当前节点的父节点内的节点,检索图书的标题。但是,这种导航方式毕竟还是同文件系统导航有所差别,特别是,在文件导航的情

14、况下,同一位置是不可能出现两个同名文件的。而XPath却经常遭遇同一类型的节点,所以XPath的定位,例如chapter/paragraph,经常索引多个节点而非一个节点。一般来说,XPath中路径开始于当前上下文,但在文件系统中,路径可以采用绝对定位而非相对定位的方式。XPath中也可以有这种方式,使用开始斜线“/”指向文档的根而不是文档的第1个节点。所以/book/title 能返回顶级节点内的节点。双斜线(/)是节点的通配路径。在有的例子中,会返回文档内各个位置的节点而不论其是否在/book/title还是位于/book/chapter/title。双斜线还可以位于路径的中间,所以,/book/title则返回节点下所有的title节点。在路径的末尾加一个星号会返回所有当前路径下所有的节点,这同文件系统通配符的用法是完全一样的。在上面的例子中,/book/chapter/* 会同时检索出根节点下的节点下的所有节点,而路径/* 则会返回文档中的所有节点。2.访问数据XPath还提供了根据比较方法选择特定属性或节点值的语法。符号指节点的标签属性。假设有type属性,按type的方式就可访问。如果为了可以从文档的任何地方访问它,访问路径应该写成/book

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号