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

如何使用XSLT将XML中的换行符转换为空格

当然可行!这是XSLT处理文本节点时非常常见的需求,我给你两种实用的解决方案,你可以根据自己的具体需求来选择:

解决方案1:使用normalize-space()函数统一空白格式

这个函数会自动把文本中的所有空白字符(包括换行符、制表符、连续空格)压缩成单个空格,同时去除文本首尾的空白。非常适合希望统一文本空白风格的场景,一步到位解决换行拼接问题。

示例XSLT模板:

<xsl:template match="para">
  <p>
    <xsl:value-of select="normalize-space(.)"/>
  </p>
</xsl:template>

拿你的示例XML来说:

<para> This is a text with random 
breaklines </para>

经过转换后会得到干净的HTML:

<p>This is a text with random breaklines</p>
解决方案2:精准替换换行符为空格(保留原有空格)

如果你只想处理换行符,不想改变原有的连续空格或者其他空白格式,可以用replace()函数(XSLT 2.0及以上版本支持)来精准匹配并替换换行符:

示例XSLT模板:

<xsl:template match="para">
  <p>
    <xsl:value-of select="replace(., '&#10;|&#13;', ' ')"/>
  </p>
</xsl:template>

这里&#10;是换行符(LF),&#13;是回车符(CR),用正则表达式匹配这两种常见的换行格式,统一替换成单个空格。

如果你的运行环境只支持XSLT 1.0,可以用translate()函数替代(它只能逐个字符替换,所以需要把两种换行符分别对应成空格):

<xsl:template match="para">
  <p>
    <xsl:value-of select="translate(., '&#10;&#13;', '  ')"/>
  </p>
</xsl:template>

这里把CR和LF两个字符分别替换成空格,注意第二个参数的每个字符对应第三个参数的位置,所以用两个空格来匹配两个换行符类型。

如果替换后出现了连续的空格,你可以再额外结合normalize-space()做二次处理;如果不需要压缩空格,直接保留替换后的结果即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:17:49