使用带有迭代的xf:setvalue函数时如何引用位置

时间:2015-04-08 10:55:02

标签: xpath orbeon xforms xpath-2.0

考虑此code示例和this post

...
<xf:action>
<xf:setvalue
            iterate="instance('fr-send-submission-params')/@*"
            ref="."
            value="event(name(context()))"/>
</xf:action>
...

如何参考当前的迭代位置?与value="position()"

一样

我可以将此位置用作xpath表达式的变量吗?与ref="/AnotherElement[position()]"

一样

1 个答案:

答案 0 :(得分:1)

以下作品:

<xf:action iterate="instance('fr-send-submission-params')/@*">
    <xf:var name="p" value="position()"/>
    <xf:setvalue ref="." value="$p"/>
</xf:action>

我认为只有使用xf:setvalue才能逃脱,因为ref会将表达式的评估上下文更改为单个项目,这意味着position()会返回{{ 1 {} 1

警告我看到你在属性上进行迭代:我不认为属性位置保证一致。

<强>更新

如果您有元素,则以下情况有效,但您需要了解value中迭代的项目:

xf:setvalue

所以我认为带有封闭动作的选项更加清晰。