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

如何在XSLT 1.0中添加/后缀空格(ISO2022cgi支付模板场景)

XSLT 1.0 实现固定长度空格填充方案

针对你需要将数据补至35个普通空格字符的需求,这里提供两个可行的XSLT 1.0实现方案:

方案1:递归模板填充

通过递归模板循环添加空格,直到字符串长度达到35,超出则截断:

<xsl:template name="pad-to-35-spaces">
  <xsl:param name="source-text" />
  <!-- 目标长度固定为35,也可改为参数灵活调整 -->
  <xsl:param name="target-length" select="35" />
  
  <xsl:choose>
    <!-- 若原字符串长度已达标,直接取前35位 -->
    <xsl:when test="string-length($source-text) >= $target-length">
      <xsl:value-of select="substring($source-text, 1, $target-length)" />
    </xsl:when>
    <!-- 未达标则追加一个空格,继续递归 -->
    <xsl:otherwise>
      <xsl:call-template name="pad-to-35-spaces">
        <xsl:with-param name="source-text" select="concat($source-text, ' ')" />
        <xsl:with-param name="target-length" select="$target-length" />
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

调用方式示例:

<!-- 假设你的数据来自名为payment-data的节点 -->
<xsl:call-template name="pad-to-35-spaces">
  <xsl:with-param name="source-text" select="payment-data" />
</xsl:call-template>

方案2:预拼接空格串截取

这种方法更简洁,提前定义足够长的空格串,拼接后截取前35位:

<!-- 定义至少35个普通空格的字符串 -->
<xsl:variable name="space-pool" select="'                                        '" />
<!-- 拼接原数据和空格池,取前35位 -->
<xsl:value-of select="substring(concat(your-data-node, $space-pool), 1, 35)" />

关键说明

  • 两种方案输出的都是普通ASCII空格(十六进制0x20),符合银行的格式要求,避免了非断空格的兼容性问题。
  • 直接添加空格会被合并,是因为XML默认会压缩连续空白字符,上述方案通过构造固定长度的字符串,确保输出的空格不会被XSLT或XML处理器合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:57:27