求助:重复节内区域转非重复区域(已尝试preceding-sibling)
解决重复表格首行保留高亮区域、后续行隐藏的问题
我完全懂你要实现的效果——重复表格里只有第一行保留那个黄色高亮区域,后面的行都把它藏起来。之前用count(preceding-sibling::my:group3) > 0没生效,问题大概率出在XPath表达式的上下文定位上,咱们来一步步修正:
核心问题:你的表达式上下文错了
你应该是在高亮区域控件的可见性规则里写的表达式吧?这时候当前的上下文是那个高亮区域的节点(比如my:highlightArea),而不是重复组my:group3本身。你之前写的preceding-sibling::my:group3是在找高亮区域的同级前置节点里的group3,这显然不对——高亮区域的同级节点是重复组里的其他子控件,不是group3。
正确的表达式写法
我们需要先定位到当前高亮区域所在的重复组my:group3,再判断它是不是第一个重复行,有两种简洁的写法:
通过计数前置重复组判断
count(../preceding-sibling::my:group3) > 0解释:
../表示当前高亮区域的父节点(也就是当前行的my:group3),然后统计这个group3的所有前置同级重复组数量——数量大于0就说明不是第一行,此时隐藏高亮区域。通过重复组的位置判断
../position() > 1解释:每个
my:group3在父容器里的position(),第一行是1,后续行是2、3...,当位置大于1时,隐藏高亮区域。
操作步骤(通用逻辑,适配多数表单工具)
- 选中需要控制可见性的黄色高亮区域控件
- 打开控件的属性面板,找到「可见性」(或「显示条件」)设置项
- 选择「隐藏此控件,当以下条件为真」
- 输入上面两种表达式中的任意一种
- 保存表单后测试,你会发现只有第一行保留高亮,后续行的高亮区域自动隐藏了
额外注意点
- 确认
my:命名空间前缀在你的表单里是正确声明的,避免因为前缀错误导致表达式失效 - 如果你的重复组结构层级更深(比如
my:repeatingTable/my:rowGroup/my:group3),需要调整../的层数,比如用../../preceding-sibling::my:rowGroup来定位到重复行节点
内容的提问来源于stack exchange,提问作者Fshbet
相关产品推荐
相关产品推荐

