我们知道,<xsl:variable>可以定义变量,而且在使用content赋值时,会生成一个临时结果树。那么,是否content赋值,只能生成临时结果树呢?
XPATH2.0引入了sequence的概念,其实,变量也可以利用content定义为序列。
XML源文件:
<?xml version="1.0"?>
<root>
<branch>18</branch>
<branch>13</branch>
<branch>17</branch>
<branch>90</branch>
</root>
我们可以利用如下XSLT文件:
<xsl:template match="/">
<xsl:variable name="var" as="xs:integer">
<xsl:sequence select="root/branch"/>
</xsl:variable>
<xsl:value-of select="$var" separator=","/>
</xsl:template>
将root下所有branch节点的文本组合成一个序列,并赋值给变量var。
那么这与
<xsl:template match="/">
<xsl:variable name="var" >
<xsl:value-of select="root/branch"/>
</xsl:variable>
<xsl:value-of select="$var" separator=","/>
</xsl:template>
有什么区别,我们有必要将变量赋值为序列吗?
第一段xslt代码生成一个序列,序列的每个元素都是xsl:integer类型。
第二段xslt代码生成一个临时结果树,临时结果树由一系列的文本节点组成。
序列相对于临时结果树有以下优点。
1,序列的生成和访问效率都要高于临时结果树。
2,临时结果树会失去数据的类型,因为一旦使用临时结果树,所有数据生成文本节点,文本节点的值的数据类型都是字符型。
但是我们运行第一段代码会报错:
A sequence of more than one item is not allowed as the value of variable $var
原因:
<xsl:variable>的as属性定义为xsl:integer,意为一个integer类型,这就要求<xsl:sequence>所生成的序列只能含有一个integer,但我们实际生成的是4 个integer。
修改办法:
<xsl:variable name="var" as="xs:integer*">
在xsl:integer后加一个星号,表示若干个integer元素。
分享到:
相关推荐
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"> <xsl:output method="html" indent="yes" omit...
-- 定义了输出文档的格式、<xsl:output> 是顶层元素(top-level element),必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。定义输出的格式html、设置输出格式的 W3C 版本号(仅在 method=...
VALUE-OF select="$outputQty" />" hits="<XSL:VALUE-OF select="$hits" />" eliteLevel="<XSL:VALUE-OF select="$eliteLevel" />" linkOpenType="<XSL:VALUE-OF select="$linkOpenType" />" xslt="true" /} 32.{PE....
如:<?xml version="1.0" encoding="gb2312" standalone="yes"?> 文档类型声明 规定元素的结构和属性列表的取值 如:<!DOCTYPE studinfo SYSTEM "studinfo.dtd"> 2)元素 空元素 <空元素标签名 属性=...
docx-xslt docx-xslt是一个 Python 库,用于为没有 XML 或 XSLT 编码的 ... ::= <command> <command> ::= <command> | <command> <command> ::= 'xsl' ':' <context> <xsl> <xsl> <context> ::= ':' <context> | <
however, it is not structured as a tutorial, and there are other books on XSLT that provide a gentler approach for beginners.<br/><br/>The book does assume a basic knowledge of XML, HTML, and the ...
用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,... </xslt> </target> </project> 最后执行ant transform就可以了,之后在output目录下就可以看到一个index.html文件,打开它就是测试报告了。
《XML XML Schema XSLT 2.0和XQuery开发详解》一书的示例源代码
XSLT 2.0 and XPath 2.0.PDF XSLT 2.0 and XPath 2.0.PDF
xerces xalan taglibs-xsl是JSP中调用<xsl:apply xml="result.xml" xsl="result.xsl"></xsl:apply>的xslt标签所必须的包。 还需要另外一个文件到http://download.csdn.net/source/655756下载。
xml-xslt-xsl-fo-dotnet 使用XML,XSLT,XSL-FO和在.NET中生成PDF文档的。 XML数据示例,XSL样式表和生成的PDF位于文件夹中(XML和XSL由)。 产生结果result.pdf : 建立解决方案 将source.xml和stylesheet.xsl...
XSLT<br><br>8.1 何时使用XSLT<br>8.1.1 格式化<br>8.1.2 转换<br>8.2 XSL语言<br>8.3 使用XSL<br>8.4 XSL命名空间<br>8.5 剖析一个简单的XSL示例<br>8.5.1 添加处理指令<br>8.5.2 创建样式表<br>8.6 创建XSLT样式表...
XSL-FO 简介 XSL-FO 的简介。包括其概念和作用。 XSL-FO 文档 本章将解 XSL-FO 文档的结构。...XSL-FO 和 XSLT 本章讲解 XSL-FO 如何使用 XSLT。 XSL-FO 对象参考手册 完整的 XSL-FO 对象列表,以及它们的属性。
xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?><UpgradeLog> <Properties><Property Name="Solution" Value="CodematicDemo"> </Property><Property Name="解决方案文件" Value=...
— Relax NG的XSLT 2.0实现rng.xsl是用XSLT 2.0编写的Relax NG验证器和简化器。 它利用XSLT对XML和XSD基本原子类型的基本支持,支持XML语法和XSD数据类型。 rng.xsl不是流验证器,它适用于内存中的文档。 与大多数...
Practical Mod Perl<br><br> Copyright <br> Preface <br> What You Need to Know <br> Who This Book Is For <br> How This Book Is Organized <br> Reference Sections <br> Filesystem Conventions <br> Apache ...
书名:Professional Ajax<br>语言:English<br>格式:PDF<br><br>------------------------------------------------<br>How This Book is Structured <br>This book begins by providing background about the ...
testng-xslt-1.1.2.zip
关于 X3-BLOG<br><br> X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...
关于 X3-BLOG<br><br> X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言ASP.NET(C#) <br><br>2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...