如何解决如何配置 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 来看,这看起来是正确的执行理念。
注意:
- 如果 output.xml 不存在,Windows 会发送错误代码 9009。为了解决这个问题,我只使用一个预定义的文件,但是如果有办法避免这个问题并且只创建没有错误的文件,我很想知道怎么做。
- 编写以下内容
备用 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 举报,一经查实,本站将立刻删除。