XSLT 中的这个错误让我很难过:
XPTY0020: Finding root of tree: the context item is not a node
Run Code Online (Sandbox Code Playgroud)
我的 XSLT 说错误的地方只是一个普通的旧变量声明:
<xsl:variable name="jmeterAvgTps"
select="/summary/results[@count eq $currentResult]/simulator[@id eq $currentId]/jmeter/tps/avg/text()" />
Run Code Online (Sandbox Code Playgroud)
XPATH是可以的,查了好几遍了,在XSLT的其他地方也用过。谷歌搜索没有发现任何有用的东西。
完整模板:
<xsl:template name="populateJmeterStats">
<xsl:param name="currentHost"/>
<xsl:param name="currentAction" />
<xsl:param name="currentResult" />
<xsl:param name="currentId" />
<xsl:message>Populating jmeter stats:
<xsl:value-of select="$currentHost"/>:
<xsl:value-of select="$currentResult"/>:
<xsl:value-of select="$currentAction"/>:
<xsl:value-of select="$currentId"/>:
</xsl:message>
<xsl:if test="$currentAction='data'">
<xsl:if
test="$currentHost='jmeter'">
<xsl:message>host is jmeter</xsl:message>
<xsl:variable name="jmeterAvgTps"
select="/summary/results[@count eq $currentResult]/simulator[@id eq $currentId]/jmeter/tps/avg/text()" />
<xsl:variable name="jmeterPercentileTps"
select="/summary/results[@count eq $currentResult]/simulator[@id eq $currentId]/jmeter/tps/percentile/text()" />
<xsl:if test="$jmeterAvgTps">
<td>
<xsl:value-of select="$jmeterAvgTps" />
</td>
</xsl:if>
<xsl:if test="$jmeterPercentileTps">
<td>
<xsl:value-of select="$jmeterPercentileTps" />
</td>
</xsl:if>
</xsl:if>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)
声明一个全局变量<xsl:variable name="main-root" select="/"/>
然后使用<xsl:variable name="jmeterAvgTps" select="$main-root/summary/results[@count eq $currentResult]/simulator[@id eq $currentId]/jmeter/tps/avg/text()" />
,问题就会消失。
在 XSLT 2.0 和更高版本中,上下文项可以是一个原始值,如字符串或数字,在这种情况下,除了将其存储在变量中并访问它之外,没有其他方法可以访问输入文档的节点。
归档时间: |
|
查看次数: |
3095 次 |
最近记录: |