Xquery 如何将节点作为for循环中的第一个元素插入?
我得到以下错误: 元素构造函数:不允许更新表达式 尝试插入时,将节点测试作为第一个插入$c 我觉得我的代码就像我在网上看到的一样,尽管我显然出了什么问题 如何插入带有Xquery 如何将节点作为for循环中的第一个元素插入?,xquery,basex,Xquery,Basex,我得到以下错误: 元素构造函数:不允许更新表达式 尝试插入时,将节点测试作为第一个插入$c 我觉得我的代码就像我在网上看到的一样,尽管我显然出了什么问题 如何插入带有for循环的节点 declare namespace db="http://basex.org/modules/db"; declare namespace file="http://expath.org/ns/file"; declare variable $form13FFileNumber as xs:string exter
for
循环的节点
declare namespace db="http://basex.org/modules/db";
declare namespace file="http://expath.org/ns/file";
declare variable $form13FFileNumber as xs:string external;
let $data := db:open('13F')//data[contains(edgarSubmission/formData/coverPage/form13FFileNumber,$form13FFileNumber)]
let $fields :=
<form13FFile>
{
for $c in $data return
insert nodes <b4>test</b4> as first into $c
}
</form13FFile>
return file:write(concat('../OUT/' , $form13FFileNumber , '.xml'), $fields)
declare namespace db=”http://basex.org/modules/db";
声明命名空间文件=”http://expath.org/ns/file";
将变量$form13FFileNumber声明为xs:string external;
让$data:=db:open('13F')//data[包含(edgarSubmission/formData/coverPage/form13FFileNumber,$form13FFileNumber)]
让$fields:=
{
对于$c,在$data return中
将测试节点作为第一个插入到$c中
}
返回文件:write(concat(“../OUT/”,$form13FFileNumber,'.xml'),$fields)
更清楚地说,我的xml看起来像
<data>
<first_Child>text</first_child>
</data>
<data>
<first_Child>text</first_child>
</data>
文本
文本
我希望它能适应
<form13FFile>
<data>
<b4>test</b4>
<first_Child>text</first_child>
</data>
<data>
<b4>test</b4>
<first_Child>text</first_child>
</data>
</form13FFile>
测试
文本
测试
文本
您似乎想要创建一个新的结果集:这里根本不需要XQuery更新!如果您想更改现有文档,但在构建新文档时根本不需要,那么XQuery Update非常有用
<form13FFile>
{
for $c in $data return
<b4>test</b4>
}
</form13FFile>
看起来您想要创建一个新的结果集:这里根本不需要XQuery更新!如果您想更改现有文档,但在构建新文档时根本不需要,那么XQuery Update非常有用
<form13FFile>
{
for $c in $data return
<b4>test</b4>
}
</form13FFile>
[我已经回答了“离线”,但作为参考,我也将我的建议放在这里]
我认为您需要的是一个copy-modify返回表达式,这就是创建更新副本的方式
let $fields :=
<form13FFile>
{
for $c in $data
return
copy $new-node := $c
modify insert nodes <b4>test</b4> as first into $new-node
return $new-node
}
</form13FFile>
let$字段:=
{
对于$c,在$data中
返回
复制$new节点:=$c
修改将测试节点作为第一个插入$new节点
返回$new节点
}
[我已经回答了“离线”,但为了便于参考,我也将我的建议放在这里]
我认为您需要的是一个copy-modify返回表达式,这就是创建更新副本的方式
let $fields :=
<form13FFile>
{
for $c in $data
return
copy $new-node := $c
modify insert nodes <b4>test</b4> as first into $new-node
return $new-node
}
</form13FFile>
let$字段:=
{
对于$c,在$data中
返回
复制$new节点:=$c
修改将测试节点作为第一个插入$new节点
返回$new节点
}
Hi Jens,我已经调整了我的问题,添加了我希望xml看起来像什么的示例,使之更清晰。你的解决方案的结果是测试,这不是我想要的。抱歉,问题不清楚。嗨,Jens,我已经调整了我的问题,添加了我希望xml看起来像什么的示例,使之更清楚。你的解决方案的结果是测试,这不是我想要的。对不起,问题不清楚。