Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 中继器(新重复)控件内的计算_Xpath_Orbeon_Xforms - Fatal编程技术网

Xpath 中继器(新重复)控件内的计算

Xpath 中继器(新重复)控件内的计算,xpath,orbeon,xforms,Xpath,Orbeon,Xforms,Orbeon form builder中的表单包含一个repeater控件(新建repeat)。假设repeater控件(新建repeat)的每行(或repeat)上有三个文本控件.每行的前两个文本控件包含数值。我希望在运行时将前两个文本控件的乘积带到第三个文本控件,而不发生任何事件。运行时将有多个重复次数,i、 e行可能会增加,但对于每一行,计算在运行时会有很大的反映,对于每一行,必须在第三行上查看前两行的乘积 我使用了以下代码: if ($quantity castable as xs:do

Orbeon form builder中的表单包含一个repeater控件(新建repeat)。假设repeater控件(新建repeat)的每行(或repeat)上有三个文本控件.每行的前两个文本控件包含数值。我希望在运行时将前两个文本控件的乘积带到第三个文本控件,而不发生任何事件。运行时将有多个重复次数,i、 e行可能会增加,但对于每一行,计算在运行时会有很大的反映,对于每一行,必须在第三行上查看前两行的乘积

我使用了以下代码:

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

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

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

<repeater>
    <quantity></quantity>
    <price></price>
    <product></product>
</repeater>
当在计算中为
节点使用此表达式时,将在每一行上生成乘积,并且不需要基于事件的操作,因为此表达式写在节点的绑定定义上

希望这能回答你所有的问题

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