我使用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节点集可能会中断,是否有任何明显的casue(例如可能与命名空间相关?)?
如果需要,我会尝试提出一个简单的例子来说明我的问题(由于它是专有代码,我无法准确发布问题的代码片段。)
答案 0 :(得分:1)
使用例如修复变量创建<xsl:variable name="allotmentValues" xmlns="">...</xsl:variable>
可能是未加前缀的路径<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>
。
答案 1 :(得分:0)
我发现此question的解决方案可以解决我的问题。
问题和解决方案的简要说明:
<xsl:variable/>
包含在具有默认命名空间的xml块中,则它继承该命名空间count($allotmentValuesNodeSet/inheritedNS:values/inheritedNSmonth)
代替count($allotmentValuesNodeSet/values/month)