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

XSLT转换XML格式时同一标签映射多个值问题排查求助

错误点说明

    1. for-each-group的分组条件错误
      原代码中group-by="/MESSAGES/COMMANDSTATUS/ORDER/@O_ID"使用了绝对路径,会取文档中所有ORDER节点的O_ID属性作为全局分组依据,而非对应当前遍历的ORDER节点自身的O_ID,需改为相对路径group-by="@O_ID"。
    1. 没有循环遍历ORDER_LINE节点
      原代码第二层for-each是遍历分组后的ORDER节点,直接取./ORDER_LINE/@SKU会一次性读取该ORDER下所有ORDER_LINE的SKU属性,XSLT 2.0中xsl:value-of读取多值时默认用空格拼接输出,所以才会出现多个SKU、数量挤在同一个标签里的情况,需改为循环每个ORDER下的ORDER_LINE节点,每个节点对应生成一个lineItems标签。
    1. URL中&符号的转义适配
      XML规范默认要求&必须转义为&,如果需要和预期输出一致输出未转义的&,可以在输出tracking_url的xsl:value-of上添加disable-output-escaping="yes"属性。

修正后XSLT代码

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />
    <xsl:template match="/">
        <root>
            <xsl:for-each-group
                select="/MESSAGES/COMMANDSTATUS/ORDER"
                group-by="@O_ID">
                <orders>
                    <id>
                        <xsl:value-of select="current-grouping-key()" />
                    </id>
                    <xsl:for-each select="current-group()">
                        <tracking_url>
                            <xsl:value-of select="@TRACKING_URL" disable-output-escaping="yes"/>
                        </tracking_url>
                        <!-- 遍历每个订单行生成单独的lineItems -->
                        <xsl:for-each select="./ORDER_LINE">
                            <lineItems>
                                <sku>
                                    <xsl:value-of select="@SKU" />
                                </sku>
                                <quantity>
                                    <xsl:value-of select="@QUANTITY" />
                                </quantity>
                            </lineItems>
                        </xsl:for-each>
                    </xsl:for-each>
                </orders>
            </xsl:for-each-group>
        </root>
    </xsl:template>
</xsl:stylesheet>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:15:02