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