`
persistC
  • 浏览: 73489 次
  • 性别: 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...

    在XSL使用数组例子

    2. **使用`&lt;xsl:variable&gt;`和`&lt;xsl:for-each&gt;`** 创建一个模拟数组,我们首先定义一系列的变量,每个变量都包含一个值。然后使用`&lt;xsl:for-each&gt;`循环遍历这些变量,以执行数组操作。例如: ```xml &lt;xsl:variable...

    xml技术文档

    `&lt;xsl:key&gt;`定义索引,`&lt;xsl:template match=pattern name=qname priority=number mode=tokens&gt;`定义模板匹配规则,`&lt;xsl:choose&gt;`, `&lt;xsl:when&gt;` 和 `&lt;xsl:otherwise&gt;` 用于条件判断,而`&lt;xsl:for-each&gt;`则用于循环...

    XML学习必备,详细课件

    &lt;li&gt;&lt;xsl:value-of select="title" /&gt;&lt;/li&gt; &lt;/xsl:for-each&gt; &lt;/ul&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 这套“XML学习必备,详细课件”将涵盖以上所有知识点,并可能包括实例解析、实战...

    XSL-FO 高级技术.rar_w3c_xml xsl_xsl

    1. **元素和属性**:XSL-FO包含一系列元素,如`&lt;fo:block&gt;`定义文本块,`&lt;fo:table&gt;`创建表格,`&lt;fo:page-sequence&gt;`定义页面序列等。每个元素都有特定的属性,用来控制它们的样式和行为。 2. **流与区域**:在XSL-...

    无废话XML无废话XML

    &lt;td&gt;&lt;xsl:value-of select="author"/&gt;&lt;/td&gt; &lt;td&gt;&lt;xsl:value-of select="price"/&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/xsl:for-each&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` ### Unicode编码 - **...

    网页版xml卡片消息生成

    &lt;p&gt;&lt;xsl:value-of select="card/description"/&gt;&lt;/p&gt; &lt;img src="{card/image}" alt="Card Image"/&gt; &lt;/div&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 4. **交互与更新**:如果需要,还可以为XML卡片添加交互功能...

    关于XML的考试的试卷

    &lt;xsl:template match="book[@category='fiction']"&gt; &lt;novel&gt; &lt;xsl:apply-templates select="@*|node()"/&gt; &lt;/novel&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 五、XML Schema验证 XML Schema提供了一种定义XML...

    XML实用大全, 含例子

    &lt;p&gt;作者:&lt;xsl:value-of select="/book/author"/&gt;&lt;/p&gt; &lt;p&gt;年份:&lt;xsl:value-of select="/book/year"/&gt;&lt;/p&gt; &lt;/body&gt; &lt;/html&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 3. **XLink(XML Linking Language)**:...

    XML的使用方式示列(xsl、xsd、dtd等)

    &lt;h1&gt;&lt;xsl:value-of select="."/&gt;&lt;/h1&gt; &lt;/xsl:template&gt; ``` 这里`match="name"`指定了匹配的XML元素,`&lt;xsl:value-of select="."/&gt;`则用于提取元素的文本内容。 4. **XPath 示例** 以下XPath表达式选取XML文档...

    xml练习题.pdf

    - 文件中提到的XSL元素,如&lt;xsl:value-of&gt;、&lt;xsl:template&gt;、&lt;xsl:apply-templates&gt;、&lt;xsl:choose&gt;,都是XSLT中的常用组件,用于在XSLT样式表中定义转换规则。 6. XML查询语言 - XPath用于在XML文档中进行导航,是...

    XMLDB.zip_partskgn_xmldb_xml技术_xml技术用途

    每个元素都由开始标签和结束标签包围,如 `&lt;element&gt;` 和 `&lt;/element&gt;`。元素可以包含其他元素、文本内容、属性等。例如: ```xml &lt;book&gt; &lt;title&gt;XML指南&lt;/title&gt; &lt;author&gt;John Doe&lt;/author&gt; &lt;year&gt;2005&lt;/year&gt; ...

    最新各大公司企业真实面试题-深圳应聘题目.txt

    接下来,文件通过 `&lt;MONTH-FREE-DAYS&gt;` 和 `&lt;SPECIAL-WORKHOURS-DAYS&gt;` 元素分别定义了每个月的非工作日以及特定日子的工作小时数。 #### XML 文件结构 - **`&lt;MONTH-FREE-DAYS&gt;`**: 定义了每个月的非工作日。 - ...

    跟我学XSL(pdf)

    - XSL由XSLT(Transformations)、XPath(Path)和XSL-FO(Formatting Objects)三部分组成。 - XSLT用于定义转换规则,将XML文档转换成新的XML或非XML格式。 - XPath是查询XML文档中节点的语言,为XSLT提供导航...

    XSL学习3

    3. **指令(Instructions)**:如`&lt;xsl:copy&gt;`、`&lt;xsl:value-of&gt;`和`&lt;xsl:for-each&gt;`等,用于控制转换过程,如复制元素、输出值或循环遍历节点。 **XPath语言** 1. **路径表达式(Path Expressions)**:类似于文件...

    CD目录应用程序

    - **选择和格式化数据**:使用`&lt;xsl:stylesheet&gt;`定义样式表,使用`&lt;xsl:value-of&gt;`显示数据,使用`&lt;xsl:for-each&gt;`遍历节点集合。 - **模板匹配**:使用`&lt;xsl:template&gt;`定义模板,通过`match`属性指定模板应用的...

    XML的一些简单举例

    &lt;/xsd:sequence&gt; &lt;/xsd:complexType&gt; &lt;/xsd:element&gt; &lt;/xsd:schema&gt; ``` 7. **XML解析**:解析XML文档有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个文档到内存...

    XML课程设计基础教程PPT

    元素分为开启标签(如`&lt;element&gt;`)、关闭标签(如`&lt;/element&gt;`)和自闭合标签(如`&lt;empty/&gt;`)。 3. 属性:元素可以有零个或多个属性,用于提供额外信息,如`&lt;element attr="value"&gt;`。 4. 内容:元素可以包含文本...

    2022年WebService期末考试题及答案参照.pdf

    1. XSLT(Extensible Stylesheet Language Transformations)用于转换XML文档,`&lt;xsl:template&gt;`定义模板规则,是XSL样式表达式的核心。 2. `&lt;xsl:sort&gt;`元素用于排序,通常与`&lt;xsl:apply-templates&gt;`或`&lt;xsl:for-...

Global site tag (gtag.js) - Google Analytics