- 浏览: 73077 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jinbo0120:
受教了,我还一直存在疑问呢,原来是1.5开始使用的...看来我 ...
5.0for循环 -
persistC:
1、到底在哪用cascade=&q ...
hibernate.hbm.xml总结 -
duanyong:
看到xml就烦。不知道为什么。嘿嘿。
hibernate.hbm.xml总结
<xsl:variable>可不是新东西了,它在XSLT1.0中也有着很广泛的应用。但我看到有些文章写到了1.0和2.0的不同,但可惜的是,他们写的代码根本和他们的说法相矛盾。
---------------------------
XML文档:
<CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Hide your heart</TITLE> <ARTIST>Bonnie Tylor</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS Records</COMPANY> <PRICE>9.90</PRICE> <YEAR>1988</YEAR> </CD> <CD> <TITLE>Still got the blues</TITLE> <ARTIST>Gary More</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Virgin records</COMPANY> <PRICE>10.20</PRICE> <YEAR>1990</YEAR> </CD> <CD> <TITLE>This is US</TITLE> <ARTIST>Gary Lee</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Virgin records</COMPANY> <PRICE>12.20</PRICE> <YEAR>1990</YEAR> </CD> </CATALOG>
特性 3:临时树
临时树是在 XSLT 2.0 中推出的另一项新结构。与 XSLT 1.0 将 XSL 转换的中间结果和 XSL 变量表示为字符串不同,XSLT 2.0 将由 <xsl:variable>、<xsl:param> 或 <xsl:with-param> 元素构造的中间结果和 XSL 变量存储为一组称为临时树的文档节点。
使用临时树,您可以使用 XPath 表达式来计算变量或参数的内容,并把 XSL 处理模块化。当使用模板或者从 XSL 变量或模板参数中提取数据时,这种方法提供了很大的灵活性。例如,如下所示,将目录变量设为选择 1988 年以后发行的所有 CD。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:variable name="catalog" select="//CD[number(YEAR)>=1988]"/>
<xsl:template match="/">
<Expensive>
<xsl:apply-templates select="$catalog[number(PRICE)>10]"/>
</Expensive>
<Cheap>
<xsl:apply-templates select="$catalog[number(PRICE) < 10]"/>
</Cheap>
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
随后可以对所选节点作进一步的分类,将价格等于或高于 10 美元的 CD 归类为高价 CD,将价格低于 10 美元的 CD 归类为廉价 CD。如果没有临时树特性,则 <xsl:apply-templates select="$catalog[number(PRICE) < 10]"/> 是无效的,并且无法访问您先前在创建 $catalog 变量时所选择的数据。
--------------
且不论它的XSLT有一个很低级的错误,就是select中使用了“<”(很明显作者根本没有运行过这段代码),它所描述的真的是1.0和2.0的区别吗?
更正它的错误,利用SAXON运行一下,得到结果:
<?xml version='1.0' ?>
<Expensive>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>This is US</TITLE>
<ARTIST>Gary Lee</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>12.20</PRICE>
<YEAR>1990</YEAR>
</CD>
</Expensive>
<Cheap>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tylor</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</Cheap>
<Expensive>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>This is US</TITLE>
<ARTIST>Gary Lee</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>12.20</PRICE>
<YEAR>1990</YEAR>
</CD>
</Expensive>
<Cheap>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tylor</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</Cheap>
我们试着把version="2.0" 改成version="1.0",注意处理器也要换成老的XALAN。
我们可以得到同样的结果。
这证明那位ORACLE的经理的说法是有问题了。
那么,1.0和2.0在临时结果树问题上到底是否存在区别呢?
当然是有区别了。
它们的区别在于,当变量的赋值形式为content赋值时,1.0和2.0才有这种区别。
举例来说:
XSL文档:
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="catalog">
<cd>
<title>the song of sping</title>
<price>12.90</price>
<quantity>18</quantity>
</cd>
</xsl:variable>
<xsl:apply-templates select="$catalog/cd"/>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="catalog">
<cd>
<title>the song of sping</title>
<price>12.90</price>
<quantity>18</quantity>
</cd>
</xsl:variable>
<xsl:apply-templates select="$catalog/cd"/>
</xsl:template>
</xsl:stylesheet>
得到输出结果:
the song of sping12.9018
---------------------------
换作1.0.:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="catalog">
<cd>
<title>the song of sping</title>
<price>12.90</price>
<quantity>18</quantity>
</cd>
</xsl:variable>
<xsl:apply-templates select="$catalog/cd"/>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="catalog">
<cd>
<title>the song of sping</title>
<price>12.90</price>
<quantity>18</quantity>
</cd>
</xsl:variable>
<xsl:apply-templates select="$catalog/cd"/>
</xsl:template>
</xsl:stylesheet>
注意processor换回老的。
Stylus Studio 2007 给出错误
---------------------------
java.lang.ClassCastException: org.apache.xpath.objects.XRTreeFrag cannot be cast to org.apache.xpath.objects.XNodeSet
URL: file:///e:/tmp/catalog1.xsl
Line:12
Col: 45
Jump to location?
---------------------------
是(Y) 否(N)
---------------------------
---------------------------
java.lang.ClassCastException: org.apache.xpath.objects.XRTreeFrag cannot be cast to org.apache.xpath.objects.XNodeSet
URL: file:///e:/tmp/catalog1.xsl
Line:12
Col: 45
Jump to location?
---------------------------
是(Y) 否(N)
---------------------------
发表评论
-
XSLT2.0---正则表达式
2009-06-06 16:27 963其实,正则表达式是XPATH2.0定义的,暂且放在XSLT里说 ... -
XSLT2.0----<xsl:analyze-string>
2009-06-06 16:26 912<xsl:analyze-string>是XS ... -
XSLT2.0----<xsl:variable>和<xsl:sequence>
2009-06-06 16:25 2969我们知道,<xsl:variable>可以定义变量 ... -
XSLT2.0----XPATH2.0序列
2009-06-06 16:24 949严格说来XPATH2.0和XSLT2.0并无直接联系,但是XP ... -
XSLT2.0----字符映射
2009-06-06 16:23 677XSLT2.0提供了字符映射功能。 对于特殊字符或特殊字符, ... -
XSLT2.0---多文件输出
2009-06-06 16:22 964<xsl:result-document>指 ... -
XSLT2.0---分组
2009-06-06 16:20 1221看了些关于XSLT2.0的东西,先来总结一下分组吧。 &l ... -
xsl2.0正则
2009-06-05 11:46 1035<xsl:analyze-string>是XSLT ... -
XSLT 2.0 的新特性
2009-06-05 11:44 1542XSLT 2.0 的新特性 关键 ... -
XSLT Designer快速入门指南
2008-12-15 21:07 899目录 概述 配 ... -
XSLT document()函数在IE与Firefox中的区别
2008-12-15 21:07 942XSLT 中 document() 函数的作用是用来访问扩展X ... -
了解XSLT
2008-12-15 21:06 951什么是XSLT? XSLT的英文标准名称为eXtensibl ... -
XSL中count()的使用
2008-12-15 21:05 1056XSL中用count()来取得xml中某种节点的个数 list ... -
XSL学习心得-制作图像超链接
2008-12-15 21:04 797这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址 ... -
xslt的简单使用[xml-->html]
2008-12-15 21:03 1015XSLT命令[xml格式转换] 1.循环 <xsl:f ... -
XSL中利用xsl:for-each时给每一项添加序号
2008-12-15 21:02 1732经常用for-each来循环读取XML中的某个节点集,但常常需 ... -
第四章:XPath的语法
2008-12-15 21:00 9774.XPath的语法 我们在前 ... -
第三章:XSLT的元素语法
2008-12-15 20:59 884通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程 ... -
第二章:XSLT的实例
2008-12-15 20:59 10062. XSLT的实例 2.1 XSLT如何转换XML 2.2 ... -
第一章:XSLT的概念
2008-12-15 20:58 7941.XSLT的概念 1.1 什么是XSLT 1.2 为什么要 ...
相关推荐
《XSLT 2.0 程序员参考指南》是Wrox出版社出版的一本经典书籍,专门针对XSLT 2.0版本进行了深入的解析和详细讲解。XSLT(Extensible Stylesheet Language Transformations)是一种用于转换XML(eXtensible Markup ...
这个压缩包 "apache-camel-2.0-M3-src.tar.gz" 包含的是Apache Camel 2.0 Milestone 3(M3)版本的源代码,对于理解Camel的工作原理、进行定制开发或对项目进行贡献非常有帮助。 Apache Camel 的核心概念是“路由...
这个"apache-camel-2.0-M1-src.tar.gz"文件是Apache Camel 2.0 Milestone 1版本的源代码包,适合开发者进行深入研究或定制开发。 Apache Camel 的核心特性包括: 1. **路由引擎**:基于EIP(Enterprise Integration...
### XSLT 2.0从入门到精通 #### 一、XSLT与XML简介 本书《Beginning XSLT 2.0 From Novice to Professional》由Jeni Tennison编写,是关于XSLT 2.0技术的详细介绍。本书针对初学者,通过逐步深入的方式介绍了XML和...
XSLT 2.0 and XPath 2.0.PDF XSLT 2.0 and XPath 2.0.PDF
This book, as the title implies, is primarily a practical reference book for professional XSLT developers. It assumes no previous knowledge of the language, and many developers have used it as their ...
XSLT 2.0是其第二个主要版本,引入了许多新特性,如支持函数库、正则表达式、格式化数字和日期等。通过XSLT,可以将XML数据转换成其他格式,如HTML、PDF或CSV,以适应不同的展示需求。 XQuery是一种查询XML数据的...
《Microsoft .NET Framework 2.0 - Web-based Client Development (70-528) Mega Guide》是针对.NET Framework 2.0版本中Web客户端开发的一份全面指南,旨在帮助开发者掌握利用.NET Framework构建Web应用程序的关键...
这个压缩包文件“testng-xslt-1.1.2.zip”包含了这个扩展的源代码、文档以及可能的库文件,使得开发者能够方便地集成到他们的测试工作中,进行更高效的质量管理和故障排查。 TestNG是Java领域中广泛使用的自动化...
《XSLT 2.0 和 XPath 2.0 程序员参考》是第四版,由Wrox出版社在2008年5月出版的一本专业书籍。这本书是针对那些想要深入理解和掌握XSLT 2.0和XPath 2.0这两种强大的XML处理技术的程序员所编写的。XSLT(可扩展样式...
标题中的"Gestalt XSLT 2.0 processor"是一个基于Eiffel编程语言开发的开源项目,专门用于处理XSLT 2.0规范。XSLT(可扩展样式表语言转换)是一种用于XML文档转换的语言,它允许开发者将XML数据转换成其他格式,如...
撒克逊语浏览器中的XSLT 2.0。历史笔记Saxon-CE是Saxonica首次涉足客户端(基于浏览器)XSLT支持,其中包括交互式XSLT扩展,旨在允许XSLT样式表通过修改HTML页面的内容来响应用户交互事件。 该产品是Saxon-Java代码...
### XSLT 2.0 知识点详解 #### XSLT 2.0 概述 XSLT(Extensible Stylesheet Language Transformations)是一种用于转换XML文档的语言。XSLT 2.0 是XSLT 1.0 的重要更新版本,于2008年发布。XSLT 2.0 在功能上有了...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在"testng-xslt-1.1.2-master"这个压缩包中,我们可以找到TestNG-XSLT的源代码和相关资源,以便于我们理解和定制自己的测试报告。以下是这个项目中的关键知识点: 1. **TestNG**: TestNG是一个功能强大的Java测试...
(1) 解压testng-xslt-1.1压缩包: 把saxon-8.7.jar(testng-xslt-1.1\lib)放到在工程目录下创建一个Lib目录; 把testng-results.xsl (testng-xslt-1.1\src\main\resources)放到test-output目录下;
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
xslt-debugger-engine-impl.jar
主要的新结果: 现在,几乎所有标准XPath 2.0函数(F&O)都具有高阶FXSL包装器,从而可以将它们用作高阶函数并从中创建部分应用程序。 现在,某些标准XSLT 2.0功能和说明具有高阶FXSL包装器,从而可以将它们用作高...