You need to enable JavaScript to run this app. 如何使用XSLT将指定XML转换为竖线分隔的目标格式文本?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSLT将指定XML转换为竖线分隔的目标格式文本?

问题原因

  • 现有代码仅遍历了SubCollection节点,没有嵌套遍历每个SubCollection下的Items子节点,无法生成对应每条Items值的独立行
  • 定义的header变量开头多写了多余的|分隔符,会导致拼接后内容格式错误
  • 没有在每行末尾添加换行符,所有输出内容会连在一起
  • 不需要额外通过position()定位SubCollection,在for-each循环内直接取当前上下文的name值即可

正确XSLT实现

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no" />
    <xsl:template match="plan">
        <!-- 提取公共前缀字段:src和Id拼接 -->
        <xsl:variable name="prefix" select="concat(src, '|', Id)" />
        <!-- 遍历所有SubCollection节点 -->
        <xsl:for-each select="CollectionA/SubCollection">
            <xsl:variable name="subName" select="name" />
            <!-- 嵌套遍历当前SubCollection下的每个Items节点 -->
            <xsl:for-each select="Attributes/Items">
                <!-- 拼接每行内容,末尾加换行符 -->
                <xsl:value-of select="concat($prefix, '|', $subName, '|', ., '&#xA;')" />
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

输出说明

上述代码运行后会完全匹配预期的竖线分隔的多行文本格式,每条Items值对应一行输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:33:01