2013-09-26 52 views
2

我目前正面臨BaseX本機XML數據庫的問題。BaseX - 將節點{...}插入// ..用於多個節點

我有一個樣本數據集,我想檢查某個節點中的某個屬性是否存在,如果存在,則將值設置爲「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"] 

我面對目前的問題是,我無法找到通過例如輸入「數據集」的所有節點迭代的方式,檢查每一個節點。它總是說「單個元素或文檔預期爲插入目標」。

+6

你應該張貼您的編輯作爲一個答案,並接受它。 –

回答

1

好,用Google搜索了很久,但有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)