Безумие XQuery

Довольно часто мне бывает нужно выделить часть данных по некоторым критериям из файлов формата XML. И каждый раз я писал небольшие скрипты или даже целые Java приложения, которые разбирали XML и анализируя файл выдавали необходимые данные. Сегодня я решил так не делать и попытался воспользоваться стандартом XQuery, предназначенным для выборок данных из XML.

Задача была простая — выбрать из файла Gnucash список счетов (Id, описание) и все транзакции (Описание, с какого счета, на какой счёт, сколько).

Первое на что стоит обратить внимание — очень много реализаций стандарта XQuery и целая куча редакторов. Редакторы есть как онлайн так и для настольных систем с ОС Windows / Linux.

Начал я изучение XQuery со статьи на Wiki, в которой не написано ну совсем ничего полезного. Потом продолжил поиск на w3c и stackoverflow. Кривая поиска вывела меня на довольно годный проприетарный редактор oXygen, его триальную версию я и поставил.

oXygen XQuey editorДолго искал как запустить правку XQuery:

  1. Создать XQuery файл
  2. Перейти в Window — Open perspective — XQuery Debugger

Получились вот такие небольшие скрипты:

Раздражает необходимость объявления всех используемых пространств имён. Непривычно отсутствие операторных скобок, хотя выражения for могут быть вложенными. Ну а остальное вполне себе съедобно.

Позже я заглянул в IntelliJ Idea и нашёл плагин XQuery Support, который оказался очень удобен для редактирования и отладки.

idea-xquery

Общее впечатление как и об XSLT/XSD — ужасный переусложнённый инструмент с небольшими возможностями и огромным зоопарком реализаций. Ну благо что свои задачи решает и работает. Всем советую для вспомогательных задач обработки данных. Только системы на нём не пишите ради всего святого.

Yuriy Artamonov on GithubYuriy Artamonov on LinkedinYuriy Artamonov on Twitter
Yuriy Artamonov
Software Developer
До последнего времени Юрий принимал активное участие в разработке опенсорс-фреймворка CUBA Platform, специализируясь на архитектуре и фронтенд-технологиях. Преподавал в Самарском университете разработку приложений для мобильных устройств, основы UI/UX и менторил студентов.

В настоящее время работает в компании JetBrains в команде IntelliJ IDEA Ultimate. Когда выдаётся свободное время, пишет статьи и контрибьютит в проекты с открытым исходным кодом. Обожает реализовывать странные идеи с лозунгом: «А почему бы и нет?».