Основной язык JSONiq поддерживает только JSON, в то же время основной язык XQuery поддерживает только XML.Однако есть много людей, которые хотят запросить XML и JSON в одной и той же программе, например, чтобы преобразовать одну в другую.Вот почему существуют расширения (оба способа).Вместо того, чтобы запрещать, я бы сказал, что они являются необязательными (и действительно поощряются).
Если данные представляют собой смесь JSON и XML, то вы можете использовать либо «расширение JSONiq для XQuery», либо «XQuery».расширение к JSONiq. "Различия незначительны и вращаются вокруг удобства.По функциям оба они эквивалентны.
Точные различия подробно документированы здесь
Полная грамматика с JSONiq, расширением XQuery и даже обновлениями и сценариями доступна здесь .
Если имеется много JSON и немного XML, то «расширение XQuery для JSONiq» более адекватно: вы можете запрашивать JSON с точками и экранировать в строкахвыполняется с обратной косой чертой, и такие литералы, как null
, true
и false
, распознаются, но любые запросы имен XPath к именам XML должны начинаться с префикса ./ (./foo
вместо просто foo
) и т. д.
Если имеется много XML и немного JSON, «расширение JSONiq для XQuery» является более адекватным: оно противоположно: поддерживается точный, совместимый с W3C синтаксис XPath и экранирование строки с амперсандами,но, например, логические значения и значения NULL должны быть записаны как true()
, false()
, null()
, чтобы не мешать XPath.
Механизм Zorba поддерживает оба варианта, и выКалифорнияn переключайтесь, используя xquery version "3.0"
или jsoniq version "1.0"
в заголовке запроса, без дальнейшей настройки: если вы используете JSONiq, расширение XQuery также всегда доступно, а если вы используете XQuery, расширение JSONiq всегда доступно.
Если заголовок отсутствует, то для определения используемого языка используется расширение .xq
или .jq
.
Независимо от того, поддерживает ли процессор JSONiq расширение XQuery, это решениепоставщик программного обеспечения.В общем, мы рекомендуем разработчикам движка JSONiq поддерживать расширение XQuery, если у них есть ресурсы.Поставщики, которые хотят сохранить очень легковесный движок, будут придерживаться ядра JSONiq.
С другой стороны, расширить существующий движок XQuery с расширением JSONiq очень просто: когда мы делали это в Zorba, когда мы начинали поддерживать JSONЭто заняло у нас всего несколько дней, потому что модель данных JSON очень проста.Джонатан Роби (Jonathan Robie) делится опытом по этой теме на Youtube .