Самая большая причина отойти от XslCompiledTransform
заключается в том, что это всего лишь процессор XSLT 1.0.
Большинство функций XSLT 2.0 и XQuery 1.0 частично совпадают, и по большей части это схожие языки с разным синтаксисом (немного похожими на C # и VB).
XSLT намного более многословен, но его шаблонные функции добавляют множество функций, которые могут быть довольно громоздкими для репликации в XQuery, особенно внося небольшие изменения в деревья узлов. Основными функциями, которые особенно громоздки в XQuery, являются такие вещи, как <xsl:template match="..." />
и <xsl:copy>...</xsl:copy>
.
XQuery имеет гораздо более чистый синтаксис (IMHO), если функции шаблонов не нужны, и я считаю, что он намного лучше для более сложных вычислений и извлечения данных из больших документов.
XQuery часто рассматривается как язык базы данных. Хотя многие базы данных используют его таким образом, это не единственное использование для него. Некоторые реализации языка в базах данных очень ограничены. Другой комментатор утверждает, что XQuery «очень строго типизирован». Если вы не используете функцию статической типизации, XQuery не более строго типизирован, чем XSLT. Хотя некоторые реализации базы данных вынуждают вас использовать функции статической типизации, большинство других реализаций отходит от этого.
Он также утверждает, что XQuery не очень хорош для "больших, более сложных вещей". Я бы поспорил с точностью до наоборот. Краткость и изящество синтаксиса значительно упрощают написание сложных функций и вычислений в XQuery. Я написал raytracer в XQuery, который кажется действительно вполне естественным; Я думаю, что было бы намного сложнее (конечно, более многословно) написать что-то столь сложное в вычислительном отношении в XSLT.
В итоге:
XSLT более естественен для трансформации. Лучше, если у вас есть документ с примерно правильной структурой, и вы хотите преобразовать компоненты, например, рендеринг HTML-версии XML-файла.
XQuery более естественен для создания нового XML-документа из различных источников или для изменения структуры документа.
Обратите внимание, что перекрытие довольно велико, и часто нет "правильного" выбора, но если вы сделаете неправильный выбор, вы будете склонны работать против зерна.