Поддерживает ли JSONiq обработку XML? - PullRequest
1 голос
/ 24 сентября 2019

Я видел утверждения, что язык запросов JSONiq также поддерживает обработку XM, но единственный пример, который я нашел, находится в статье JSONiq Wikipedia.Похоже, обработка XML возможна только с «расширением JSONiq для XQuery», но это не то же самое, что JSONiq, не так ли?Спецификация JSONiq не включает синтаксис XML, поэтому его следует запретить?

1 Ответ

1 голос
/ 24 сентября 2019

Основной язык 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 .

...