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

XPath translate()函数对Unicode分解/合成字符的处理行为咨询

问题解答

现象是否符合预期?

完全符合预期。

相关规范说明

XPath(XSLT基于XPath规范)的字符串处理函数(包括translate())默认基于Unicode码点进行精确匹配,不会自动对字符串进行Unicode规范化(比如将分解形式的é转换为合成形式,或反之)。

具体到你的场景:

  • 合成形式的é是单个Unicode码点U+00E9,而分解形式的é是两个码点的组合:U+0065(小写字母e) + U+0301(组合重音符号),二者在Unicode中属于不同的字符序列。
  • translate()函数的匹配逻辑是逐个对比码点:
    1. 第一次调用时,$from参数包含分解形式的é(两个码点)加上abc,输入字符串中的a会匹配到$from中的a码点,由于$to参数长度短于$from,导致该字符被删除,最终输出bc;
    2. 第二次调用时,$from参数中的é是单个码点U+00E9,输入字符串的a、b、c都无法匹配到该码点,因此全部保留,输出abc。

如果需要让两种形式的é得到一致的处理结果,可以显式使用normalize-unicode()函数将字符串统一为相同的规范化形式(比如NFC或NFD),示例如下:

translate('abc', normalize-unicode('éabc'), 'eabc')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:21:03