2017-07-12 85 views
0

我運行在查詢控制檯下面的代碼.xqy文件:但是查詢控制檯VS

for $leader in /wl:leader  
let $age := xs:integer(fn:days-from-duration(fn:current-date() - xs:date($leader/wl:dob/text())) div 365.25) 
return $age 

現在,無論是相似的,:

let $age := xs:integer(fn:days-from-duration(fn:current-date() - xs:date(/wl:leader/wl:dob/text())) div 365.25) 

return $age 

而且在.xqy文件中的以下當在查詢控制檯上運行時,我得到錯誤:arg1不是xs:duration類型的? 我知道錯誤是由'fn:current-date()'中的持續時間部分引起的,但爲什麼我不會面對與.xqy文件相同的問題?

+1

您沒有運行相同的代碼。這兩個代碼塊是完全不同的,第二個顯然只是一個子集。確保它們都是100%相同的代碼,並在此提交。例如,可能原因是$領導者是空的。 – hunterhacker

+0

我在這個問題上做了一些修改。第二個代碼片段工作正常,所以$領導者不是問題。謝謝:) – Yash

+0

得到了錯誤。感謝您的輸入 – Yash

回答

1

正如亨特先生指出的那樣,代碼的差異解釋了錯誤。

第二個示例一次將一個領導者傳遞給表達式。

第一個例子將所有的領導者都傳遞給期待單個領導者的表達。

希望有幫助,

+1

可能值得注意的是,在MarkLogic中,在XQuery中使用裸'/'與寫'collection()/'實際上是一樣的。換句話說,如果你編寫'/ wl:leader',那將會選擇文檔數據庫中任何地方的所有'wl:leader'根元素。 – grtjn

+0

噢,在第一個代碼中,我將一個dob的整個序列一次。謝謝。 – Yash