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

XQuery调用codepoints-to-string时codepoints转integer报错咨询

错误原因

  • 你调用fn:replace替换空格后得到的仍然是单个字符串,并非可直接传入codepoints-to-string的整数序列
  • 直接对包含逗号、空格的字符串执行xs:integer转换,会因为存在非数字字符触发类型转换报错,也就是你收到的FORG0001错误

解决方法

你需要先将空格分隔的编码字符串按空格分割为单个数字字符串,再逐个转换为整数,即可得到xs:integer*类型的序列:

declare function local:decodeBase64() as element(){
  <root-element>
    {    
      let $codepointsString := "77 97 110"
      (: 按空格分割字符串得到单个数字的字符串序列 :)
      let $codepointStrSeq := fn:tokenize($codepointsString, '\s+')
      (: 逐个转换为整数,得到xs:integer*序列 :)
      let $codepointIntSeq := $codepointStrSeq ! xs:integer(.)
      let $x := fn:codepoints-to-string($codepointIntSeq)
      return
      $x
    }
  </root-element>
};

如果你的XQuery环境不支持!映射运算符,可以替换为for循环遍历转换:

let $codepointIntSeq := for $s in $codepointStrSeq return xs:integer($s)

如果是从XML元素中获取codepoint值,处理逻辑完全一致,比如你有如下结构的元素:

<codepoint-list>77 97 110</codepoint-list>

只需要先取元素的文本内容再执行上述处理即可:

let $codepointsString := $your-element/text()
(: 后续分割、转换逻辑和上面完全相同 :)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:27:01