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

BaseX调用XSLT模块通过API报[XPST0003]错误求助

问题解决:BaseX远程API调用XSLT查询失败

问题原因

本地BaseX GUI可正常执行的XQuery,通过Postman调用远程API时报错[XPST0003] Expecting variable declaration,核心原因是XML提交格式未处理转义:

  • GUI会自动处理查询文本中的XML特殊字符,但直接提交XML格式的请求时,<text>标签内的<xsl:stylesheet>等XML标签会被XML解析器误识别为XML结构,而非XQuery的字符串字面量,导致XQuery语法被破坏。

修复方案

方案1:转义XML特殊字符

将查询文本中的<替换为&lt;,>替换为&gt;,确保XML解析器将其视为文本内容:

<query><text>
    let $xml := doc("/dsn_ext/pcbtestxmldbdata001_test001.xml") 
    let $style := &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;&lt;xsl:output method="xml" /&gt;&lt;xsl:template match="/"&gt;&lt;xsl:copy-of select="." /&gt;&lt;/xsl:template&gt;&lt;/xsl:stylesheet&gt; 
    return xslt:transform-text($xml,$style)
</text>
</query>

方案2:使用CDATA包裹查询文本

用<![CDATA[...]]>包裹整个XQuery代码,告知XML解析器直接保留内部内容,不做XML解析:

<query><text><![CDATA[
    let $xml := doc("/dsn_ext/pcbtestxmldbdata001_test001.xml") 
    let $style := <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="xml" /><xsl:template match="/"><xsl:copy-of select="." /></xsl:template></xsl:stylesheet> 
    return xslt:transform-text($xml,$style)
]]></text>
</query>

验证

两种方案均可确保远程BaseX API正确解析XQuery语法,执行结果与本地GUI一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:40:19