2

我目前面临 BaseX 本机 XML 数据库的问题。

我有一个示例数据集,我想在其中检查某个节点中的某个属性是否存在,如果存在则设置一个值“true”。如果它不存在,我想插入一个新属性。这是我的单个节点代码:

if(fn:exists(//Dataset[@attribute="2"]/@b)) then
  replace value of node //Dataset[@attribute="2"]/@b with "true"
else
  insert node (attribute { 'b' } { "CREATED!" }) into //Dataset[@attribute="2"]

我目前面临的问题是,我无法找到一种方法来遍历“数据集”类型的所有节点并检查每个节点。它总是说“预期作为插入目标的单个元素或文档”。

4

1 回答 1

1

好的,谷歌搜索了很长时间,但多花 15 分钟就可以让我免于发布这个问题:

for $dataset in //mondial/Dataset
 let $DOCH := $dataset/@DOCH
 return
 if(fn:exists($DOCH)) then (
replace value of node $DOCH with "true")
else (
  insert node (attribute DOCH {"true"}) into $dataset)
于 2014-06-24T16:24:59.663 回答