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

XSLT2.0----<xsl:variable>和<xsl:sequence>

    博客分类:
  • XSLT
阅读更多
我们知道,<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元素。
分享到:
评论

相关推荐

    eclipse-testng 离线包下载

    &lt;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"&gt; &lt;xsl:output method="html" indent="yes" omit...

    动易SF通用信息列表解释版

    -- 定义了输出文档的格式、&lt;xsl:output&gt; 是顶层元素(top-level element),必须是 &lt;xsl:stylesheet&gt; 或 &lt;xsl:transform&gt; 的子节点。定义输出的格式html、设置输出格式的 W3C 版本号(仅在 method=...

    动易网站标签说明(电子书)

    VALUE-OF select="$outputQty" /&gt;" hits="&lt;XSL:VALUE-OF select="$hits" /&gt;" eliteLevel="&lt;XSL:VALUE-OF select="$eliteLevel" /&gt;" linkOpenType="&lt;XSL:VALUE-OF select="$linkOpenType" /&gt;" xslt="true" /} 32.{PE....

    xml入门教程/xml入门教程

    如:&lt;?xml version="1.0" encoding="gb2312" standalone="yes"?&gt; 文档类型声明 规定元素的结构和属性列表的取值 如:&lt;!DOCTYPE studinfo SYSTEM "studinfo.dtd"&gt; 2)元素 空元素 &lt;空元素标签名 属性=...

    docx-xslt:Microsoft Word .docx 模板文件的 XSL 转换

    docx-xslt docx-xslt是一个 Python 库,用于为没有 XML 或 XSLT 编码的 ... ::= &lt;command&gt; &lt;command&gt; ::= &lt;command&gt; | &lt;command&gt; &lt;command&gt; ::= 'xsl' ':' &lt;context&gt; &lt;xsl&gt; &lt;xsl&gt; &lt;context&gt; ::= ':' &lt;context&gt; | &lt;

    XSLT 2.0 Programmer's Reference, Third Edition

    however, it is not structured as a tutorial, and there are other books on XSLT that provide a gentler approach for beginners.&lt;br/&gt;&lt;br/&gt;The book does assume a basic knowledge of XML, HTML, and the ...

    testNG-xslt

    用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,... &lt;/xslt&gt; &lt;/target&gt; &lt;/project&gt; 最后执行ant transform就可以了,之后在output目录下就可以看到一个index.html文件,打开它就是测试报告了。

    XML XML Schema XSLT 2.0和XQuery开发详解源代码.rar

    《XML XML Schema XSLT 2.0和XQuery开发详解》一书的示例源代码

    XSLT 2.0 and XPath 2.0.PDF

    XSLT 2.0 and XPath 2.0.PDF XSLT 2.0 and XPath 2.0.PDF

    JSP中使用XSLT所需要的jar

    xerces xalan taglibs-xsl是JSP中调用&lt;xsl:apply xml="result.xml" xsl="result.xsl"&gt;&lt;/xsl:apply&gt;的xslt标签所必须的包。 还需要另外一个文件到http://download.csdn.net/source/655756下载。

    xml-xslt-xsl-fo-dotnet:使用XML,XSLT,XSL-FO和FO.NET在.NET中生成PDF文档的示例

    xml-xslt-xsl-fo-dotnet 使用XML,XSLT,XSL-FO和在.NET中生成PDF文档的。 XML数据示例,XSL样式表和生成的PDF位于文件夹中(XML和XSL由)。 产生结果result.pdf : 建立解决方案 将source.xml和stylesheet.xsl...

    C#XML入门经典 C#编程人员必备的XML技能.part2

    XSLT&lt;br&gt;&lt;br&gt;8.1 何时使用XSLT&lt;br&gt;8.1.1 格式化&lt;br&gt;8.1.2 转换&lt;br&gt;8.2 XSL语言&lt;br&gt;8.3 使用XSL&lt;br&gt;8.4 XSL命名空间&lt;br&gt;8.5 剖析一个简单的XSL示例&lt;br&gt;8.5.1 添加处理指令&lt;br&gt;8.5.2 创建样式表&lt;br&gt;8.6 创建XSLT样式表...

    XSL-FO 教程

    XSL-FO 简介 XSL-FO 的简介。包括其概念和作用。 XSL-FO 文档 本章将解 XSL-FO 文档的结构。...XSL-FO 和 XSLT 本章讲解 XSL-FO 如何使用 XSLT。 XSL-FO 对象参考手册 完整的 XSL-FO 对象列表,以及它们的属性。

    XML的代码的编写

    xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?&gt;&lt;UpgradeLog&gt; &lt;Properties&gt;&lt;Property Name="Solution" Value="CodematicDemo"&gt; &lt;/Property&gt;&lt;Property Name="解决方案文件" Value=...

    rng.xsl:Relax NG的XSLT 2.0实现

    — Relax NG的XSLT 2.0实现rng.xsl是用XSLT 2.0编写的Relax NG验证器和简化器。 它利用XSLT对XML和XSD基本原子类型的基本支持,支持XML语法和XSD数据类型。 rng.xsl不是流验证器,它适用于内存中的文档。 与大多数...

    Practical Mod Perl

    Practical Mod Perl&lt;br&gt;&lt;br&gt; Copyright &lt;br&gt; Preface &lt;br&gt; What You Need to Know &lt;br&gt; Who This Book Is For &lt;br&gt; How This Book Is Organized &lt;br&gt; Reference Sections &lt;br&gt; Filesystem Conventions &lt;br&gt; Apache ...

    Professional Ajax

    书名:Professional Ajax&lt;br&gt;语言:English&lt;br&gt;格式:PDF&lt;br&gt;&lt;br&gt;------------------------------------------------&lt;br&gt;How This Book is Structured &lt;br&gt;This book begins by providing background about the ...

    testng-xslt-1.1.2.zip

    testng-xslt-1.1.2.zip

    X3BLOG 单用户版 FOR ACCESS 1.0beta 源代码

    关于 X3-BLOG&lt;br&gt;&lt;br&gt; X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...

    X3BLOG v0.7.5.0

    关于 X3-BLOG&lt;br&gt;&lt;br&gt; X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言ASP.NET(C#) &lt;br&gt;&lt;br&gt;2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\...

Global site tag (gtag.js) - Google Analytics