如何配置 BaseX 以在 VS Code 中使用 有什么问题我怎么知道这是问题所在?我如何配置 settings.json什么有效测试数据

问题描述

有什么问题

我正在尝试使用 BaseX 使 XQuery 在 VS Code 中工作,但是每次我尝试使用 XML 工具执行查询时,它都会失败,因为它在命令中的执行返回了错误代码

我怎么知道这是问题所在?

repository for the extension 上写着:

执行引擎的输出是通过 stdout 为您的 操作系统。如果进程以 0 以外的任何代码退出,则任何 写入标准输出内容显示错误消息。如果内容 从标准输出包含一个行号,错误提示将包含一个 按钮将您带到相关线路。

我在运行查询时收到的结果是写入为错误exact查询结果,这正是您在上面引用的情况下所期望的。

我如何配置 settings.json

在前面提到的repository上,settings.json的写法如下:

{
    "xmlTools.xqueryExecutionEngine": "C:\\Program Files (x86)\\Altova\\AltovaXML2008\\AltovaXML.exe","xmlTools.xqueryExecutionArguments": [
        "-xquery","$(script)","-in","$(input)"
        "-out","$(input).output.xml"
    ]
}

但是,我使用的是 BaseX,所以我尝试使用它创建上述等效项:

"xmlTools.xqueryExecutionEngine": "basex.bat","xmlTools.xqueryExecutionArguments": [
    "$(script)","-i","$(input)","-o","output.xml"
],

basex docs 来看,这看起来是正确的执行理念。

注意:

  1. 如果 output.xml 不存在,Windows 会发送错误代码 9009。为了解决这个问题,我只使用一个预定义的文件,但是如果有办法避免这个问题并且只创建没有错误文件,我很想知道怎么做。
  2. 编写以下内容

备用 settings.json

"xmlTools.xqueryExecutionArguments": [
    "-o","output.xml",],

不起作用,尽管这是我必须在 cmd 中编写它的方式(我在包含输入文件时也尝试过这种方法,但由于我在特定情况下不使用它,因此我尝试了两种方法)。

什么有效

cmd中,写

basex -o output.xml data.xq

有效,如果 output.xml 存在,则

echo %ErrorLevel%

返回 0

我对如何将 settings.json 转换为 cmd 有点困惑,所以我不确定如何在我的 cmd 中重现 VS Code 中遇到的问题。如果有一种方法可以忽略退出代码(并防止停止执行我的命令),那将解决我的问题。更好的是找到写入 settings.json 的正确方法,以便我从 VS Code 运行我的 XQuery。

测试数据

为了测试,这里是我使用的文件

data.xsd

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="personType">
    <xs:sequence>
        <xs:element name="fname" type="xs:string"/>
        <xs:element name="minit" type="xs:string"/>
        <xs:element name="lname" type="xs:string"/>
    </xs:sequence>
</xs:complexType> 
<xs:complexType name="peopleType">
    <xs:sequence>
        <xs:element name="person" type="personType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>
<xs:element name="peopleDB" type="peopleType"></xs:element>
</xs:schema>

data.xml

<?xml version="1.0" ?>
<peopleDB xsi:noNamespaceSchemaLocation="data.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <person>
        <fname>John</fname>
        <minit>A</minit>
        <lname>Roger</lname>
    </person>
    <person>
        <fname>Fred</fname>
        <minit>X</minit>
        <lname>Gerald</lname>
    </person>
</peopleDB>

data.xq

<personDB>
{
let $d:=doc("data.xml") for $p in 
$d/peopleDB/person
return $p
}
</personDB>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)