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

XML XSLT规则:如何为转换后的连续文本添加空格?

解决驼峰式字符串添加空格的XSL方案

嘿,这事儿我熟!你现在拿到的是典型的驼峰式拼接字符串,要拆分它其实就是在每个大写字母(除了第一个)前面插入空格就行。下面分两种常用的XSLT版本给你具体解法:

如果你用的是XSLT 2.0及以上版本

这版本支持正则表达式,用replace()函数就能一行搞定,超方便:

<!-- 直接在每个大写字母前加空格,注意开头会多一个空格 -->
<xsl:value-of select="replace(your-target-node/text(), '([A-Z])', ' $1')"/>

<!-- 如果想去掉开头多余的空格,用normalize-space或者substring处理 -->
<xsl:value-of select="normalize-space(replace(your-target-node/text(), '([A-Z])', ' $1'))"/>
<!-- 或者 -->
<xsl:value-of select="substring(replace(your-target-node/text(), '([A-Z])', ' $1'), 2)"/>

把your-target-node/text()换成你实际获取那个连续字符串的XPath就行,比如你的源节点是<surgeries>keratopathySurgeries...</surgeries>,就写成//surgeries/text()。

如果你用的是XSLT 1.0版本(无原生正则支持)

那得写个递归模板来逐个字符处理,思路是检查每个字符,如果是大写且不是第一个字符,就插入空格:

<!-- 定义递归模板 -->
<xsl:template name="insert-spaces-between-camelcase">
  <xsl:param name="input-text"/>
  <xsl:param name="previous-char" select="''"/>
  
  <xsl:if test="$input-text != ''">
    <xsl:variable name="current-char" select="substring($input-text, 1, 1)"/>
    
    <!-- 如果当前字符是大写,且不是第一个字符,插入空格 -->
    <xsl:if test="$previous-char != '' and $current-char = translate($current-char, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')">
      <xsl:text> </xsl:text>
    </xsl:if>
    
    <xsl:value-of select="$current-char"/>
    
    <!-- 递归处理剩下的字符 -->
    <xsl:call-template name="insert-spaces-between-camelcase">
      <xsl:with-param name="input-text" select="substring($input-text, 2)"/>
      <xsl:with-param name="previous-char" select="$current-char"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

<!-- 调用模板的方式 -->
<xsl:call-template name="insert-spaces-between-camelcase">
  <xsl:with-param name="input-text" select="your-target-node/text()"/>
</xsl:call-template>

这个模板会遍历字符串的每个字符,遇到大写字母(且不是第一个)就自动插空格,最终输出就是带空格的拆分结果:keratopathy Surgeries Lensectomy Lensectomy Trabeculectomy Trabeculotomy Trabeculotomy Ahmed。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:33:20