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