- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XSLT入门学习资料、XPath转换XML文件要点
8.2.2 XSLT简介
XSLT把XML文档转换为完全不同的输出。这样可以把数据内容存储在XML文档中,然后通过各种媒体将其输出到各种介质中:无线电、打印、语音等格式。当数据发生变化时,只需要修改源XML文档,不需要在多处重复相同的修改工作。通常情况下,XSLT用于将XML文档转换为HTML,目的是可以在浏览器中进行显示。
最简单的XSLT应用情况首先涉及到两个文档:包含原始数据的XML文档和用来转换该文档的XSLT转换文档。将XML原文档输入,处理器根据XSLT文档作为模板进行转换,最终输出需要的文档。
图8.1 ?使用XSL转换XML文档
XSLT的一些可能的应用包括:
以查看为目的添加元素。如向XML格式的订单中添加公司标志或发送者的地址。
从现在内容创建新的内容。如创建目录。
从XML文档中提取信息。如向管理人员提供详细的信息,对普通员工提供有限的信息。
在不同的XML字典或模型之间进行转换。如将公司专用的文档转换为符合业界标准的文档。
将XML文档转换为HTML,用以实现与现有浏览器之间的兼容。
有关XSLT的语法规则,将在本章后续部分详细介绍。
8.2.3 XPath简介
在XSLT中, XPath表达式返回4种类型值:节点集合(node-set)、布尔值(Boolean)、数字和字符串。XSLT元素通常把XPath 表达式当作属性值,采用计算表达式的结果。
基本上XSLT的最常规用法是返回节点集合或者字符串,具体取决于有关的元素定义。比如,xsl:template match=chapter 定义了当前节点上下文环境内针对chapter节点的模板。在这种情况之下,XPath表达式chapter即可返回节点集合作为以后XSL函数可用的新的上下文。那么在模板内的xsl:value-of select=title/代码中,XPath表达式把当前上下文中任何title节点的原始内容以字符串的形式返回。
1.节点导航
XPath导航的外观和行为完全和文件系统导航一模一样。斜线分隔父子节点:chapter/title代表只在当前上下文的chapter节点内直接检索title节点。
与常用来进出目录层次的文件系统语法类似,在XPath中,即可检索节点的父节点:../title会指向当前节点的父节点内的title节点,检索图书的标题。
但是,这种导航方式毕竟还是同文件系统导航有所差别,特别是,在文件导航的情况下,同一位置是不可能出现两个同名文件的。而XPath却经常遭遇同一类型的节点,所以XPath的定位,例如chapter/paragraph,经常索引多个节点而非一个节点。
一般来说,XPath中路径开始于当前上下文,但在文件系统中,路径可以采用绝对定位而非相对定位的方式。XPath中也可以有这种方式,使用开始斜线“/”指向文档的根而不是文档的第1个节点。所以/book/title 能返回顶级book节点内的title节点。
双斜线(//)是节点的通配路径。在有的例子中,xsl:template match=//title会返回文档内各个位置的title节点而不论其是否在/book/title还是位于/book/chapter/title。双斜线还可以位于路径的中间,所以,/book//title则返回book节点下所有的title节点。
在路径的末尾加一个星号会返回所有当前路径下所有的节点,这同文件系统通配符的用法是完全一样的。在上面的例子中,/book/chapter/* 会同时检索出根节点book下的chapter节点下的所有节点,而路径//* 则会返回文档中的所有节点。
2.访问数据
XPath还提供了根据比较方法选择特定属性或节点值的语法。
@符号指节点的标签属性。假设chapter有type属性,按@type的方式就可访问。如果为了可以从文档的任何地方访问它,访问路径应该写成/book/chapter/@type。
方括号从一个集合中选出一个节点,很象是传统编程中的数组。为了只选出第2个chapter,可以用一个形如/book/chapter[2]的XPath表达式。注意,集合中的第1个节点的编号是1,而不是大多数编程语言中规定的0。
同时,也可以把这些条件组合起来按照其属性值选择节点,在条件为真时才返回节点。条件包含在方括号中,跟在要应用条件的元素之后。如:
xsl:template match=price[@unit=USD]
这里match值的内容是一个正则表达式。@unit表示为unit属性。例子说明要匹配的是这样的节点:一个带unit属性的元素price,而且unit的值必须为USD。例如对应的一段XML代码是这样的:
price
?? unitUSD/unit
?? amount
文档评论(0)