2013-05-08 36 views
0

有沒有辦法在xquery文件的執行流程中「死掉」並輸出格式良好的序列變量打印輸出?打印出xquery序列並退出

我想是這樣的:

return { fn:error(xs:QName("ERROR"), $xml) } 

但是,這並不十分似乎工作。

謝謝!

+1

你能否詳細說明在功能方面你要實現的目標是什麼?拋出一個錯誤可能不是這裏最好的解決方案。 – grtjn 2013-05-08 20:47:13

+0

只是爲了調試目的而獲得一些打印輸出。 – 2013-05-08 21:08:55

回答

2

基於您的評論(你需要它爲了調試)我猜你正在尋找fn:trace功能,這裏http://www.xqueryfunctions.com/xq/fn_trace.html

說明如果要中止在您的應用程序中應該執行流程和輸出錯誤實際上使用XQuery異常處理。

+0

有沒有什麼辦法可以打印出一個很好格式化的序列,而不是將所有的值放到一個長字符串中? – 2013-05-09 15:50:34

+0

爲什麼你需要很好格式化的東西,如果它只是爲了調試目的? – dirkk 2013-05-09 19:36:09

+0

所以我實際上可以讀它! :)一個長的XML字符串很難讀取...... – 2013-05-09 20:05:31

1

嘗試類似這樣的操作,如果這不是FLWOR表達式的一部分,則省略return

... 
return fn:error((), "DEBUG", $xml) 

沒有必要對大括號,除非你封閉的表達,例如<x>{ current-time() }</x>。返回表達式不是封閉的。

使用MarkLogic時,最好將fn:error的第一個參數留空。這樣你就不必擔心QName了,無論如何,有些人認爲它是爲預定義的錯誤保留的。 MarkLogic使用第二個參數來填寫error:code,第三個參數用於填寫數據。

更多關於fn:error,看到http://docs.marklogic.com/fn:errorhttps://github.com/robwhitby/xray/pull/11

+0

我仍然在這裏得到「Unexpected QName_」.... – 2013-05-09 15:50:03

+1

對不起,我認爲你可以根據需要將它放到FLWOR表達式中。 「返回」在FLWOR或類型開關外無效。所以如果上下文不是FLWOR,就省略'return'。 http://en.wikipedia.org/wiki/FLWOR有更多。 – mblakele 2013-05-09 16:21:43