我已经简化了以下的XSL来更好地说明我的问题。这是:
<?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工作。但是,当我尝试获取任何其他值(包括Item值,Item count和Item total)时,我没有得到任何值。任何人都可以帮我解决这个问题吗?我花了差不多一天时间就看不清楚为什么我没有得到任何价值。 提前谢谢。
答案 0 :(得分:2)
您忘记包含root
元素。
<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>
...输出
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