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

时间:2018-08-13 13:59:18

标签: xslt xforms

将嵌套(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天以来我一直被困在这里。请为我提供解决方案。

预先感谢

1 个答案:

答案 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"/>