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

如何在XSLT模板中为以元音开头的$ClubName变量添加l'前缀?

如何在XSLT模板中为以元音开头的$ClubName变量添加l'前缀?

嘿,这个需求其实用XSLT的XPath表达式就能轻松搞定,我给你两种实用的方法,适配不同的XSLT版本:

  • 方法一:兼容XSLT 1.0的条件判断法
    如果你还在使用XSLT 1.0(没有原生正则支持),可以用starts-with结合translate来处理大小写问题,确保不管俱乐部名称开头是大写还是小写元音都能匹配到:

    <xsl:value-of select="
      if (starts-with(translate($ClubName, 'AEIOU', 'aeiou'), 'a') or
          starts-with(translate($ClubName, 'AEIOU', 'aeiou'), 'e') or
          starts-with(translate($ClubName, 'AEIOU', 'aeiou'), 'i') or
          starts-with(translate($ClubName, 'AEIOU', 'aeiou'), 'o') or
          starts-with(translate($ClubName, 'AEIOU', 'aeiou'), 'u'))
      then concat('l''', $ClubName)
      else $ClubName
    "/>
    

    这里的translate把所有大写元音转成小写,避免因为大小写导致匹配失败;concat里的l''是XSLT中转义单引号的写法,最终输出的是l'。

  • 方法二:XSLT 2.0+的正则表达式法
    如果你用的是XSLT 2.0及以上版本,正则表达式会更简洁,一行就能搞定:

    <xsl:value-of select="replace($ClubName, '^([aeiouAEIOU].*)', 'l''$1')"/>
    

    正则^([aeiouAEIOU].*)会匹配以元音开头的整个字符串,然后用l'$1替换($1代表捕获到的原字符串内容)。如果变量不是以元音开头,replace会直接返回原内容,完全不用额外的条件判断。

如果你的场景需要处理带重音的元音(比如à、é、ì这类),只需要把这些字符加到判断条件或者正则里就行,比如把正则改成^([aeiouAEIOUàéìòù].*)。

备注:内容来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:33:03