首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在xsl:node-set之后提取数据

无法在xsl:node-set之后提取数据
EN

Stack Overflow用户
提问于 2012-10-17 22:48:58
回答 1查看 200关注 0票数 2

为了更好地说明我的问题,我简化了下面的XSL部分。这就是它:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"  exclude-result-prefixes="msxsl"
  xmlns:exsl="http://exslt.org/common"
  >
  <xsl:output method="xml"  doctype-public="..." doctype-system="..." indent="yes"/>
  <xsl:template match="/">
  <xsl:variable name="tmpTotal">
    <root>
      <items>
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
      </items>
    </root>
  </xsl:variable>

  <xsl:variable name="myTotal" select="exsl:node-set($tmpTotal)"/>
  All values:<xsl:copy-of select="($myTotal)/*"/>
  <xsl:for-each select="($myTotal)/items/item">
    Item value:<xsl:value-of select="."/>
  </xsl:for-each>
  Item count:<xsl:value-of select="count(($myTotal)/items/item)"/>
  Item total:<xsl:value-of select="sum(($myTotal)/items/item)"/>
 </xsl:template>
</xsl:stylesheet>

我知道当xsl:copy-of select起作用时,这些值在节点中。但是,当我尝试获取任何其他值(包括项目值、项目计数和项目总数)时,我得不到任何值。有人能帮我解决这个问题吗?我已经花了几乎一天的时间在上面,我不明白为什么我没有得到任何价值。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-10-17 22:55:07

您忘记了包含root元素。

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
  xmlns:exsl="http://exslt.org/common"
  exclude-result-prefixes="msxsl exsl xsl">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*" />    

<xsl:template match="/">
  <xsl:variable name="tmpTotal">
    <root>
      <items>
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
      </items>
    </root>
  </xsl:variable>

  <xsl:variable name="myTotal" select="exsl:node-set($tmpTotal)"/>
  All values:<xsl:copy-of select="($myTotal)/*"/>
    <xsl:for-each select="($myTotal)/root/items/item">
    Item value:<xsl:value-of select="."/>
  </xsl:for-each>
    Item count:<xsl:value-of select="count(($myTotal)/root/items/item)"/>
    Item total:<xsl:value-of select="sum(($myTotal)/root/items/item)"/>
 </xsl:template>
</xsl:stylesheet>

输出...

代码语言:javascript
复制
  All values:<root><items><item>1</item><item>2</item><item>3</item><item>4</item></items></root>
    Item value:1
    Item value:2
    Item value:3
    Item value:4
    Item count:4
    Item total:10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12937056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档