【问题标题】:xslt:if how to test for boolean valuesxslt:if 如何测试布尔值
【发布时间】:2011-01-04 19:49:21
【问题描述】:

我无法找到一种方法来检查元素的值是“真”还是“假”。

它是布尔值,从数据集转换而来。当我选择该值时,我看到它是“真”或“假”,但我的测试没有得到预期的行为。 (它总是错误的。)我几乎尝试了所有方法,这是我的第一个 xslt 应用程序,非常感谢您的帮助。

      <xsl:if test="ispassive">
        <tr>
          <td>
            <em>pasif değil</em>
            <hr></hr>
          </td>
        </tr>
      </xsl:if>

【问题讨论】:

  • ispassive 是什么意思?它是属性的值吗?它是可能存在或不存在的属性吗?
  • 感谢回复,看起来我放错了 if 条件,这就是它失败的原因。 test="ispassive='true'" 在我的情况下有效。
  • 未来问题需要考虑的事项:您指的是 attribute 值,但实际上是在评估 element 并且它是计算出来的文本值。您的描述与您的问题不完全匹配,如果您发布了一个小的示例 XML 和更多的 XSLT,我们会更容易帮助您诊断问题。

标签: xslt


【解决方案1】:

在这里发帖后,我意识到 我的&lt;xsl:if&gt; 测试在我的&lt;xsl:for-each&gt; 循环之外。

重新定位&lt;xsl:if&gt; 条件后,我发现这对我有用。

        <xsl:if test="ispassive='true'">
          <tr>
            <td>
              <em>pasif</em>
              <hr></hr>
            </td>
          </tr>
        </xsl:if>

ispassive元素的评估字符串值与'true'进行比较可以正常工作,(我之前尝试过,但因为我把它放错了xslt,它总是失败,因为它没有选择ispassive元素来评估它的价值。

【讨论】:

  • 您的原始测试标准是验证 ispassive 元素的存在,无论其值如何。所以,只要有一个存在,它就会返回true()。通过更改测试以评估ispassive 元素的,它仅在值为“true”时返回true()
【解决方案2】:

根据您表示布尔值的方式,可能有很多东西,您的数据是什么样的?

最有可能的情况是,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>

如果你不需要,你可以省略它。

【讨论】:

    【解决方案3】:

    这个 xslt 正在当前上下文中寻找一个名为 ispassive 的节点。

    所以如果你的 xml 是

    <Root>
       <ispassive />
    </Root>
    

    你会明白的。通常,您应该为要检查的值指定一个 xpath。所以如果你的 xml 是

    <Root>
          <Node ispassive="true"/>
    </Root>
    

    然后你替换

    <xsl:if test="ispassive">
    

    <xsl:if test="//@ispassive = 'true'">
    

    您的样式表将按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      相关资源
      最近更新 更多