2013-05-08 4 views
0

Есть ли способ «умереть» в потоке выполнения в файле xquery и выводить красиво отформатированную распечатку переменной последовательности?распечатать последовательность и выход xquery

Я пытаюсь что-то вроде:

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

, но это не совсем похоже на работу.

Спасибо!

+1

Не могли бы вы уточнить в функциональных терминах того, что вы пытаетесь достичь? выброс ошибки может быть не лучшим решением здесь. – grtjn

+0

просто пытается получить некоторые распечатки для целей отладки. –

ответ

2

Основываясь на ваш комментарий (вам это нужно для отладки) Я предполагаю, что вы ищете функции fn:trace, описанные здесь http://www.xqueryfunctions.com/xq/fn_trace.html

Если вы хотите, чтобы прервать поток выполнения и вывод об ошибке в приложении вы должны в факт использует обработку исключений XQuery.

+0

Есть ли способ распечатать красиво отформатированную последовательность, вместо того, чтобы перетаскивать все значения в одну длинную строку? –

+0

Зачем вам хорошо отформатированный материал, если он предназначен только для отладки? – dirkk

+0

Так что я действительно могу это прочитать! :) Длинную строку XML трудно читать ... –

1

Попробуйте что-то вроде этого, опустив return, если это не часть выражения FLWOR.

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

Там нет необходимости в фигурные скобки, если вы не заключая выражение, например <x>{ current-time() }</x>. Возвращаемое выражение не прилагается.

С MarkLogic лучше оставить первый параметр fn:error пустым. Таким образом, вам не нужно беспокоиться о QName, и в любом случае некоторые люди считают, что он зарезервирован для предопределенных ошибок. MarkLogic использует второй параметр для заполнения error:code и третий параметр для данных.

Более подробную информацию о fn:error см http://docs.marklogic.com/fn:error и https://github.com/robwhitby/xray/pull/11

+0

Я все еще получаю «Неожиданное QName_» здесь .... –

+1

Извините, я предположил, что вы можете поместить это в выражение FLWOR по мере необходимости. «Возврат» недействителен вне FLWOR или типаwitch. Поэтому, если контекст не является FLWOR, опустите 'return'. http://en.wikipedia.org/wiki/FLWOR больше. – mblakele