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

如何在XSLT的translate函数中同时移除重音及特殊字符?

XSLT同时移除重音字符与特殊字符的解决方案

核心思路

利用XSLT的translate()函数特性:第二个参数指定所有需要处理的字符(重音字符+特殊字符),第三个参数仅提供重音字符对应的替换字符,特殊字符因无对应替换项会被直接移除。


XML输入示例

<text>
  <content>Café au Lait! @#$%^&*()_+</content>
  <content>Éclair, Ñandu, Piña Colada?</content>
</text>

原有XSLT代码(仅处理重音)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <output>
      <xsl:for-each select="text/content">
        <item>
          <xsl:value-of select="translate(., 'ÀÁÂÃÄÅàáâãäåÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÙÚÛÜùúûüÝýÑñ', 'AAAAAAaaaaaaEEEEeeeeIIIIiiiiOOOOOOooooooUUUUuuuuYyNn')"/>
        </item>
      </xsl:for-each>
    </output>
  </xsl:template>
</xsl:stylesheet>

当前输出(特殊字符未移除)

<output>
  <item>Cafe au Lait! @#$%^&*()_+</item>
  <item>Eclair, Nandu, Pina Colada?</item>
</output>

修改后的XSLT代码(同时处理重音与特殊字符)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <output>
      <xsl:for-each select="text/content">
        <item>
          <xsl:value-of select="translate(., 'ÀÁÂÃÄÅàáâãäåÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÙÚÛÜùúûüÝýÑñ!@#$%^&amp;*()_+?,', 'AAAAAAaaaaaaEEEEeeeeIIIIiiiiOOOOOOooooooUUUUuuuuYyNn')"/>
        </item>
      </xsl:for-each>
    </output>
  </xsl:template>
</xsl:stylesheet>

关键修改点:

  1. 将需要移除的特殊字符(!@#$%^&*()_+?,等)追加到translate()的第二个参数末尾
  2. XML中&需转义为&amp;,避免语法错误
  3. 第三个参数保持原有重音替换字符,特殊字符因无对应替换项会被自动移除

预期输出

<output>
  <item>Cafe au Lait </item>
  <item>Eclair Nandu Pina Colada</item>
</output>

扩展说明

  • 如果使用XSLT 2.0及以上版本,也可通过replace()函数结合正则表达式批量移除特殊字符,示例:
    <xsl:value-of select="replace(translate(., 'ÀÁÂÃÄÅàáâãäåÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÙÚÛÜùúûüÝýÑñ', 'AAAAAAaaaaaaEEEEeeeeIIIIiiiiOOOOOOooooooUUUUuuuuYyNn'), '[^\w\s]', '')"/>
    
    正则[^\w\s]会匹配所有非单词、非空格字符并移除,适合批量处理大量特殊字符的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:10:20