0

我有一个 XForm 调查。我想将问题保存在与收集答案的 xf:instance 相同模型的单独 xf:instance 中。在一个例子中,一组包含 10 个问题。在第二种情况下,一组持有 10 个答案。将提交二审。因此,这类似于两个列表之间的连接。

我尝试使用如下逻辑:

<xf:output ref="instance('questions')/question[position()]/@text"></xf:output>

但是那个 position() 总是返回 1,因为上下文是问题 xf:instance。使用 index('current-repeater') 将所有 10 个显示的问题更新为最近关注的重复迭代索引处的问题。

有没有办法在 xpath 中使用临时变量来完成这个?我尝试了 $variables 的各种用法,甚至:

<xf:output ref="instance('questions')/question[position() = (count(current()/preceding-sibling::*) + 1)]/@text"></xf:output>

谢谢,

杰森

4

2 回答 2

1

解决方案不也是:

<xf:output value="instance('questions')/question[current()/position()]/@text"></xf:output>

current() 函数返回上下文节点,请参阅http://www.w3.org/TR/xforms11/#fn-current

于 2009-12-10T22:28:30.370 回答
0

好吧,事实证明这是目前不支持的:

使用 XSLT 1.0 编写的 XSLTForms 的 XPath 分析器尚不支持诸如“preceding-sibling::”之类的轴。

相反,请按照以下方式做一些事情:

<xf:instance id="positions">
  <data xmlns="">
    <position />
  </data
</xf:instance>

...

<xf:setvalue ref="instance('positions')/position">1</xf:setvalue>
<xf:setvalue ref="instance('positions')/position" value="count(instance('main')/path/to/things/thing)-1" />
etc.

然后使用它们:

<xf:input ref="path/to/things/thing[instance('positions')/position]"> ...

来自 xsltforms-support@lists.sourceforge.net

于 2009-12-08T17:16:15.063 回答