将嵌套(xf:repeat)与2个不同的实例一起使用时会出现问题。
<xf:repeat nodeset="instance('roomdetails-instance')/rooms/room/" id="room">
<xf:repeat nodeset="instance('tapechart-instance')/bookings/booking/" id="book">
<xf:output ref="roomNo"/> //This is from first instance
<xf:output ref="name"/> //This is form second instance
</xf:repeat>
</xf:repeat>
第二个实例工作正常,但第一个实例不打印任何内容
最近2天以来我一直被困在这里。请为我提供解决方案。
预先感谢
答案 0 :(得分:1)
这里的麻烦是内部xf:repeat更改了内部xf:output表达式的上下文。它将输出元素的ref表达式更改为类似于instance('tapechart-instance')/ bookings / booking / roomNo和instance('tapechart-instance')/ bookings / booking / name的形式。
您也许可以使用xf:var
在外部重复中定义一个变量,该变量包含给定迭代的roomNo值。尽管它来自xforms 2.0,但并未得到广泛支持。 https://www.w3.org/TR/xforms20/#The_var_element
在xforms 1.0中应支持的另一个选项是使用索引函数https://www.w3.org/TR/xforms/#fn-index。
您可以尝试将<xf:output ref="roomNo"/>
更改为类似<xf:output ref="instance('roomdetails-instance')/rooms/room[index('room')]/roomNo"/>