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

使用XSLT将XML转CSV时替换地址字段中的逗号

用XSLT替换XML地址字段中的逗号,解决CSV列错位问题

你的问题核心是CSV以逗号作为列分隔符,而地址字段里的逗号被错误识别成分隔符,导致列错位。我们可以通过XSLT的translate()函数来替换地址中的逗号,同时搭配normalize-space()优化地址格式,完美解决这个问题。

修改后的完整XSLT代码

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
    <xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:template match="/">
        Name,Age,Sex,Address
        <xsl:for-each select="//EmpDetails">
            <xsl:value-of select="concat(
                Name, ',',
                Age, ',',
                Sex, ',',
                translate(normalize-space(Address), ',', ' '),
                '&#xA;'
            )"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

关键修改说明

  • translate()函数:这是解决逗号问题的核心,它会把地址字符串里的所有逗号(,)替换成空格( ),语法为translate(要处理的字符串, 要替换的字符, 替换后的字符),你也可以根据需求把空格换成其他符号(比如分号;)
  • normalize-space():自动清理地址里的多余空格、换行符,同时把多个空格合并成一个,让地址格式更整洁
  • 修正循环范围:原代码里select="//Details"只会循环一次(因为Details是根节点),改成select="//EmpDetails"才能遍历每个员工的信息,输出多行数据

最终输出效果

处理后的CSV内容会是这样,列完全对齐,没有错位:

Name,Age,Sex,Address
AAA,51,M,25 SilverStreet
BBB,62,M,12 GoldStreet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:56