微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何配置 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 举报,一经查实,本站将立刻删除。