You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xsl:for-each-group分组后内容重复4次的问题排查

XSLT按<eop>分组内容重复问题排查

需要将XML文档解析为HTML,其中<eop>为分页节点。使用xsl:for-each-group按<eop>分组后,每组内容重复显示4次,不符合预期。

XML代码

before eo
                
                after
              
            
          
          
            
              point content
            
          
          
            
              point content
            
          
          
            
              before eo 387
                
                after 387
            
          
          
            
               content 5
            
          
          
            
               before eop 388
                
                after 388
            
          
        
      
    
  

原始XSLT代码

当前错误输出

before eo
                            after
                        before eo
                            after
                         before eo
                            after
                         before eo
                             

预期输出(第一组)

<div> before eo</div>

问题原因

  1. 分组节点范围错误:select="mainBody/descendant::node()"会选中所有后代节点,包括article_1、content、p这类元素节点,以及文本节点。这些元素节点的字符串值是其所有后代文本的拼接(即before eo after),加上原本的目标文本节点,第一组内共有4个节点的字符串值重复。
  2. 输出方式错误:<xsl:value-of select="$groups(1)"/>会输出数组内所有节点的字符串值,直接导致内容重复四次。

解决方法

方法一:缩小分组节点范围,仅选中文本和<eop>元素

修改分组的select属性,只选取文本节点和<eop>元素,避免包含父元素节点:

方法二:按段落内节点分组,精准定位分页位置

如果分页仅针对<p>内的内容,可直接在<p>节点内分组,避免跨元素干扰:

说明

两种方法都能避免父元素节点的字符串值重复输出,同时精准提取<eop>之前的内容作为分页块。方法二更适合分页仅作用于段落内的场景,逻辑更清晰。

内容的提问来源于stack exchange,提问作者Yael Stack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:15:26