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

XSLT中for-each循环无法获取book节点下所有元素问题

解决方案

问题根因

你循环选取<book>节点传入自定义模板后,模板没有正确读取传入节点下的<section>子节点和嵌套的书籍详情字段,才会出现执行失效或字段缺失的问题。

完整可运行XSLT实现(符合模板+变量的业务要求)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 入口匹配模板 -->
    <xsl:template match="/">
        <LocalStore>           
            <xsl:for-each select="//stores/store/books/book">     
                <xsl:call-template name="buildLocalDetails">
                    <xsl:with-param name="bookNode" select="."/> 
                </xsl:call-template>
            </xsl:for-each>
        </LocalStore>    
    </xsl:template>

    <!-- 自定义字段映射模板 -->
    <xsl:template name="buildLocalDetails">
        <xsl:param name="bookNode"/>
        <!-- 变量提取所需字段值 -->
        <xsl:variable name="section" select="$bookNode/section"/>
        <xsl:variable name="bookType" select="$bookNode/bookinfo/bookdetails/A"/>
        <xsl:variable name="bookLPP" select="$bookNode/bookinfo/bookdetails/B"/>
        
        <LocalDetails>
            <section>
                <xsl:value-of select="$section"/>
            </section>
            <BookType>
                <xsl:value-of select="$bookType"/>
            </BookType>
            <BookLPP>
                <xsl:value-of select="$bookLPP"/>
            </BookLPP>
        </LocalDetails>
    </xsl:template>
</xsl:stylesheet>

实现说明

  • 保留了你原本选取<book>节点的for-each逻辑,传入自定义模板的是完整的book节点,可访问该节点下所有层级的字段
  • 所有字段通过变量提取、模板调用实现,符合业务规则要求
  • 输出结果和你给出的预期结构完全一致,不会丢失<section>字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:15:01