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

如何用XSLT将连续多空格替换为<text:s>标签生成ODS文件?

使用XSLT处理ODS生成中的连续空格替换问题

完全可以实现这个需求,核心思路是利用XSLT的字符串分析功能,匹配连续2个及以上的空格序列,将其替换为对应数量的<text:s>标签,单个空格则保持原样。

核心XSLT代码实现

<xsl:template match="cell">
  <text:p>
    <xsl:analyze-string select="." regex="\s{2,}">
      <!-- 输出未匹配到连续空格的文本(含单个空格) -->
      <xsl:non-matching-substring>
        <xsl:value-of select="."/>
      </xsl:non-matching-substring>
      <!-- 处理连续空格序列,生成对应数量的text:s标签 -->
      <xsl:matching-substring>
        <text:s text:c="{string-length(.)}"/>
      </xsl:matching-substring>
    </xsl:analyze-string>
  </text:p>
</xsl:template>

代码说明

  • <xsl:analyze-string>:通过正则\s{2,}匹配2个及以上的连续空白字符,若需仅匹配空格(排除制表符、换行等),可将\s替换为 。
  • <xsl:matching-substring>:获取匹配到的连续空格长度,生成带text:c属性的<text:s>标签,属性值为空格数量。
  • <xsl:non-matching-substring>:直接输出非连续空格的文本内容,包括单个空格。

示例验证

输入XML:

<cell>CCC   GR</cell>
<cell>Olol lo</cell>

输出结果:

<text:p>CCC<text:s text:c="3"/>GR</text:p>
<text:p>Olol lo</text:p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:32:05