我无法找到检查元素值是“true”还是“false”的方法。
它是布尔值,从数据集转换而来。当我选择值时,我看到它是“true”或“false”,但我的测试没有得到预期的行为。 (它总是假的。)我几乎尝试了所有东西,这是我的第一个xslt应用程序,所以请帮助。
<xsl:if test="ispassive">
<tr>
<td>
<em>pasif değil</em>
<hr></hr>
</td>
</tr>
</xsl:if>
答案 0 :(得分:18)
在这里发帖后,我意识到了这一点
我的<xsl:if>
测试超出了我的<xsl:for-each>
循环。
重新定位<xsl:if>
条件后,我发现这对我有用。
<xsl:if test="ispassive='true'">
<tr>
<td>
<em>pasif</em>
<hr></hr>
</td>
</tr>
</xsl:if>
将ispassive
元素的计算字符串值与'true'进行比较工作正常,(我之前尝试过,但因为我在xslt中放错了位置,所以它总是失败,因为它无法选择{ {1}}元素来评估它的价值。
答案 1 :(得分:13)
根据您代表布尔值的方式,这可能是很多事情,您的数据是什么样的?
最有可能的情况是,false表示为0,true表示任何非0值。
<xsl:if test="$myvalue = 0">
-- output if false --
</xsl:if>
但您最好使用xsl:choose
<xsl:choose>
<xsl:when test="$myvalue = 0">
-- output if false --
</xsl:when>
<xsl:otherwise>
-- output if true --
</xsl:otherwise>
</xsl:choose>
如果你不需要,你可以忽略它。
答案 2 :(得分:10)
此xslt正在当前上下文中查找名为ispassive的节点。
所以如果你的xml是
<Root>
<ispassive />
</Root>
你会成真的。通常,您应指定要检查的值的xpath。所以如果你的xml是
<Root>
<Node ispassive="true"/>
</Root>
并替换
<xsl:if test="ispassive">
与
<xsl:if test="//@ispassive = 'true'">
您的样式表将按预期工作。