【问题标题】:xforms - relevant with OR conditionxforms - 与 OR 条件相关
【发布时间】:2015-07-01 07:26:39
【问题描述】:

(我刚开始使用 xforms)

我有一个包含 10 个整数输入字段和 1 个文本字段的表单 我正在尝试在文本字段上设置相关标准。 我想要做的是当且仅当一个或多个字段的值高于 18 时才显示文本字段。

我认为我需要相关领域的 or 条件,例如: 相关="(/data/weight_group/weight1 > 18 || /data/weight_group/weight2 > 18)"

显然这并不完全正确,但我什至在 Google/Stack/etc. 上都找不到任何接近的东西,这让我相信我找错了树。

有什么建议吗? 谢谢

【问题讨论】:

    标签: xforms


    【解决方案1】:

    应该是这样的:

    relevant="/data/weight_group/weight1 < 18 or /data/weight_group/weight2 > 18"
    

    一些解释:

    • 相关属性的值是XPath 表达式。因此,当某些东西不起作用时,您需要查阅 XPath 文档。
    • XPath 中的逻辑运算符是“and”和“or”,而不是“&&”和“||”。
    • 您需要将 XPath 表达式中的 转义为 <和 >,这样它们就不会弄乱 XML 结构。 (有人可以证实这一点吗?)

    【讨论】:

    • 叹息,是的。我尝试了“或”、转义和其他几件事,但显然从来没有正确的组合。但是,是的,这解决了问题,谢谢。要回答您的转义问题,我相信至少您需要转义
    • 如果您使用 XPath 2,您还可以使用 ltgt 运算符,您不需要转义(这就是引入这些运算符的原因)。
    【解决方案2】:

    首先,相关属性是模型属性,这意味着它不适用于控件。其次,它通过绑定元素进行更新。

    <model  xmlns="http://www.w3.org/2002/xforms">
      <instance>
         <data xmlns="">
            <weight_group>
               <weight1/><weight2/>
            </weight_group>
            <valid_weight>
         </data>
      </instance>
      <bind nodeset="/data/valid_weight" relevant="../weight_group/weight1 &lt; 18 or ../weight_group/weight2 &gt; 18">
    </model>
    

    属性valid_weight受此条件控制,任何绑定到有效权重的控件在不相关时都会消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2019-05-26
      • 2013-04-07
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多