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

IBM Cast Iron Studio URI拼接转义问题及XSLT实现咨询

解决URI拼接时&符号被误解析为参数分隔符的问题

这个问题的核心是String1中的&没有被转义,直接拼接后会被HTTP协议识别为新的查询参数分隔符,导致67890被当成一个无键的参数,进而引发请求失败。要实现你期望的输出,我们可以通过两种方式处理:

方式一:使用Studio的Replace函数直接转义

在拼接URI之前,先对String1中的&进行替换,把它转成&,再进行concat操作:

' 先处理String1,替换&为&
Dim processedString1 As String = Replace(String1, "&", "&")
' 再拼接最终URI
Dim finalUri As String = Concat("/api?invoice=", processedString1, "&supplier=", String2)

这样处理后,String1会变成12345&67890,拼接后的URI就是你想要的/api?invoice=12345&67890&supplier=78326832,服务器能正确识别invoice参数的完整值。

方式二:用XSLT转义&符号

当然可以用XSLT来实现符号到HTML实体的转换,你可以写一个递归模板来处理字符串中的所有&:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 定义转义&的模板 -->
  <xsl:template name="escape-ampersand">
    <xsl:param name="input-string"/>
    <xsl:choose>
      <!-- 如果字符串里还有&,就截取前面的部分,输出&amp;,再递归处理剩下的内容 -->
      <xsl:when test="contains($input-string, '&amp;')">
        <xsl:value-of select="substring-before($input-string, '&amp;')"/>
        <xsl:text>&amp;amp;</xsl:text>
        <xsl:call-template name="escape-ampersand">
          <xsl:with-param name="input-string" select="substring-after($input-string, '&amp;')"/>
        </xsl:call-template>
      </xsl:when>
      <!-- 没有&的话直接输出原字符串 -->
      <xsl:otherwise>
        <xsl:value-of select="$input-string"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <!-- 调用模板的示例 -->
  <xsl:template match="/">
    <xsl:variable name="processed-string1">
      <xsl:call-template name="escape-ampersand">
        <xsl:with-param name="input-string" select="'12345&amp;67890'"/>
      </xsl:call-template>
    </xsl:variable>
    <!-- 拼接生成最终URI -->
    <xsl:value-of select="concat('/api?invoice=', $processed-string1, '&amp;supplier=', '78326832')"/>
  </xsl:template>
</xsl:stylesheet>

这个XSLT模板会递归遍历字符串,把所有的&替换成&amp;,之后再拼接成目标URI即可。

本质上,这两种方式都是通过转义特殊字符,让HTTP服务器能够正确识别查询参数的边界,避免把参数值里的&当成新参数的分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:36:09