cts:element-walk
— это простое преобразование "сверху вниз" за один проход. Аналогично, скажем, java stream().map()
Он может выполнять базовый поиск/замену на основе имен и значений элементов. cts:xxx — это специфичные для MarkLogic API.
typeswitch
встроен в язык XQuery. и представляет собой выражение, которое оценивает один элемент (не обязательно узел или элемент), аналогичный, скажем, оператору java 'switch'.
Вы используете их по-разному, например, вам не нужно использовать рекурсивный алгоритм для базовых cts:element-walk
, с другой стороны, переключатель типа может различать не только имена элементов и элементов, но также типизированные значения (неэлементные типы), определенные пользователем и схема типы. Но на самом деле он ничего не делает, поэтому его нужно использовать в более широком контексте (обычно это рекурсивная функция xquery).
Из-за этого объем предоставляемого пользователем (следовательно, интерпретируемого) кода, необходимого для выполнения аналогичных действий, намного больше для переключателя типа, поэтому, вероятно, он будет медленнее. Однако cts:element-walk
можно использовать во многих случаях — переключение типа может
A) Если вы можете легко сделать это с помощью cts:element-walk
-- сделайте это
Б) Если нет, то не надо.
person
DALDEI
schedule
19.10.2018