XFORMS:将嵌套 (xf:repeat) 与 2 个不同的实例一起使用时出现问题

XFORMS: Issue while using nested (xf:repeat) with 2 different instance

对 2 个不同的实例使用嵌套 (xf:repeat) 时出现问题。

<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 天我一直被困在这里。请提供解决方案。

提前致谢

这里的问题是内部 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"/>