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

XSL使用for-each循环遍历节点仅输出第一条记录问题求助

问题原因

  • 外层循环选择器DETAILS/PALLETDETAILS仅匹配<DETAILS>直接子级的第一层<PALLETDETAILS>,无法命中嵌套在其内部的第二层<PALLETDETAILS>节点,导致外层循环仅执行1次,遗漏了第二层节点的内容。
  • 内层循环使用了以/开头的绝对路径/DETAILS/PALLETDETAILS/PRODUCTDETAILS,每次执行都会从根节点开始查找,仅能返回第一层<PALLETDETAILS>下的产品数据,即使外层能遍历到第二层,也会输出错误的重复内容。

修正后的XSL代码

<xsl:template match="/">
  <!-- 匹配DETAILS下所有层级的PALLETDETAILS节点 -->
  <xsl:for-each select="DETAILS//PALLETDETAILS">
    <palletcounttotal>
      <xsl:value-of select="PALLETCOUNTTOTAL"/>
    </palletcounttotal>
    <!-- 相对路径匹配当前PALLETDETAILS下的所有PRODUCTDETAILS -->
    <xsl:for-each select="PRODUCTDETAILS">
      <prodnum>
        <xsl:value-of select="PRODNUM"/>
      </prodnum>
      <quantity>
        <xsl:value-of select="QUANTITY"/>
      </quantity>
      <boxes>
        <xsl:value-of select="BOXES"/>
      </boxes>
    </xsl:for-each>
  </xsl:for-each>
</xsl:template>

修正说明

  1. 外层循环的选择器改用DETAILS//PALLETDETAILS,双斜杠表示匹配<DETAILS>后代所有层级的<PALLETDETAILS>节点,不管嵌套深度,这样两层托盘数据都会被遍历到。
  2. 内层循环改用相对路径PRODUCTDETAILS,仅查找当前正在遍历的<PALLETDETAILS>节点下的产品数据,不会跨节点读取错误内容。
  3. 补充了对应输出标签的定义,保证输出结构和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:15:01