首页 > 解决方案 > 如何在单个 XPath 表达式中执行两个函数?

问题描述

是否可以将这两个表达式组合成一个表达式,以便它会选择之前的子字符串并翻译输出字符串?

translate(//LogEvents/LogEvent[@StatusCode=2][1]//Asset/@Title, 'üäöõÜÄÖÕ', 'uaooUAOO')

substring-before(//LogEvents/LogEvent[@StatusCode=2][1]//Asset/@Title, '[')

我将它用于我们的广播播放系统正在播放的导出,以使其对 RDS 可读并消除版本信息等。

标签: xmlxsltxpath

解决方案


你可以做

substring-before(translate(//LogEvents/LogEvent[@StatusCode=2][1]//Asset/@Title, 'üäöõÜÄÖÕ', 'uaooUAOO'), '[')

在 XPath 3.1 中,您可以使用箭头运算符,这使得它更具可读性:

//LogEvents/LogEvent[@StatusCode=2][1]//Asset/@Title => 
  translate('üäöõÜÄÖÕ', 'uaooUAOO') =>
  substring-before('[')

推荐阅读