转发器(新重复)控件内的计算

时间:2012-10-19 11:14:48

标签: xpath orbeon xforms

Orbeon表单构建器中的表单包含一个转发器控件(新的重复)。假设转发器控件的每一行(或重复)有三个文本控件(新的重复)。每行的前两个文本控件包含数字我希望在运行时将前两个文本控件的产品带到第三个文本控件而不会发生任何事件。运行时会有多个重复次数,即行可能会增加,但每次计算都会在运行时反映出来并且对于每一行,前两个产品必须在第三个产品上查看

我使用了以下代码:

if ($quantity castable as xs:double and $price castable as xs:double)
then $quantity * $price
else 'n/a'

当转发器控件中只有一行时,可以使用此xpath表达式。但是在添加新行时,即在运行时增加重复时,所有结果都会导致第三列的控件更改为else值(“ N / A“)。这仅适用于单行转发器控件(新重复)。因为对于每次重复,必须分别为每一行计算值。

1 个答案:

答案 0 :(得分:1)

假设这是您为每行重复的节点

<repeater>
    <quantity></quantity>
    <price></price>
    <product></product>
</repeater>

用于计算产品的Xpath表达式为

if(../quantity castable as xs:double and  ../price castable as xs:double) 
    then ../quantity * ../price
    else 'N/A'

在计算<product>节点时使用此表达式会在每行上生成产品,并且不需要基于事件的操作,因为这是在节点的绑定定义上编写的。

希望这能解答您的所有问题