我使用node-set内置函数将xsl变量转换为节点集,如下所示
<xsl:variable name="allotmentValuesNodeSet" select="msxsl:node-set($allotmentValues)"/>命令<xsl:copy-of select="$allotmentValuesNodeSet"/>产生以下输出:
<values>
<month>Mar</month>
<incomeQTD>1499.63109246680</incomeQTD>
<realizedQTD />
<incomeYTD>1519.35773710483</incomeYTD>
<realizedYTD />
<incomePrevYTD>1519.35773710483</incomePrevYTD>
<realizedPrevYTD />
<month />
<incomeQTD />
<realizedQTD />
<incomeYTD />
<realizedYTD />
<incomePrevYTD />
<realizedPrevYTD />
</values>当我试图使用这个xsl命令<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>查询节点集变量时,我总是得到0,尽管结果应该是2。
allotmentValues变量包含在其他外部xml节点之间。如果我没有将它包含在任何xml节点之间,那么代码将按预期的方式工作。
是否存在明显的级联(例如,名称空间相关?)为什么查询xsl节点集可能会中断?
如果需要的话,我将尝试拿出一个简单的例子来说明我的问题(我不能准确地发布问题的代码片段,因为它是专有代码)。
发布于 2017-01-03 13:55:35
使用例如<xsl:variable name="allotmentValues" xmlns="">...</xsl:variable>修复变量创建,并且可能使用无前缀路径<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>工作。
发布于 2017-01-03 13:55:13
我已经从这个question中找到了在我的情况下工作的解决方案。
对这一问题和解决办法的简要说明:
<xsl:variable/>包含在带有默认命名空间的xml块中,它将继承该命名空间。count($allotmentValuesNodeSet/inheritedNS:values/inheritedNSmonth)而不是count($allotmentValuesNodeSet/values/month)。https://stackoverflow.com/questions/41444932
复制相似问题