我有两个嵌套循环,每个循环使用一个不同的节点来获取数据:
1) <?for-each-group:/DATA/TEST/ROW;./target_test?>
2) <?for-each:/DATA/TEST2/ROW?>
在第一个组中为每个target_test循环生成一个报告页面,在第二个组中填充一个表。 在这一点上,如果我只有一个target_test,则报告运行良好,但是如果我有更多target_test,则该表将充满所有target_test,而不仅仅是 与上面的循环引用。因此,例如,结果是我的页面的target_test = data1,该表在表中还包含target_test = data2,target_test = data3等。
我的问题是:是否可以通过条件检查第二个循环中的target_test是否等于第一个循环中的目标测试?在这种情况下,我可以简单地隐藏 条件不为真时的表格行。
答案 0 :(得分:1)
您正在告诉代码执行此操作:
对于测试中具有不同target_test值的每一行,循环遍历 TEST2中的每行。
所以这是预期的行为。您没有指定外循环target_test应该如何影响内循环。
您可能想要这样的东西:
<?for-each-group:/DATA/TEST/ROW;./target_test?>
<?for-each:/DATA/TEST2/ROW[target_test=current-group()/target_test]?>
do something
<?end for-each?>
<?end for-each-group?>
如果这样做没有帮助,请提供一个可重现的示例以及数据样本。
答案 1 :(得分:0)
最简单的方法似乎是在外部循环中使用变量,将target_test的值存储到变量(set_variable)中,然后在第二个循环中进行检查。
但是也可以在第二个循环中仅过滤与父循环匹配的记录。使用过滤器(方括号),可以在有变量和无变量的情况下实现。