XSL Transformation in Java: An Easy Way

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

XSL-преобразование (XSLT) - это мощный механизм преобразования одного XML-документа в другой. Однако в Java манипуляции с XML достаточно громоздки и сложны. Даже для простого XSL-преобразования вам придется написать несколько десятков строк кода - и может быть даже больше, если требуется правильная обработка и регистрация исключений. jcabi-xml - это небольшая библиотека с открытым исходным кодом, которая значительно упрощает жизнь, позволяя выполнять разбор XML и обход XPath с помощью нескольких простых методов. Давайте посмотрим, как эта библиотека помогает в XSL-преобразованиях.

Во-первых, рассмотрим практический пример - rultor.com - хостинговый помощник DevOps, который автоматизирует операции по выпуску, слиянию и развертыванию. Rultor сохраняет каждую сеансовую беседу с конечным пользователем (также известную как “разговор”) в записи DynamoDB. В каждом разговоре есть несколько ситуаций, которые необходимо обработать, поэтому использование нескольких столбцов записи не является целесообразным. Вместо этого мы сохраняем только несколько параметров каждого разговора в столбцах записи (например, идентификатор и имя) и помещаем все остальное в один столбец XML.

Приблизительно так выглядит наша таблица DynamoDB:

Когда пользователь отправляет @rultor status в тикет GitHub, Rultor должен ответить полным отчетом о текущем разговоре. Чтобы создать такой текстовый ответ (обычному пользователю не понравится XML-ответ), нам нужно получить столбец xml из соответствующей записи в DynamoDB и преобразовать его в обычный английский текст.

Вот как мы делаем это с помощью jcabi-xml и его класса XSLDocument.

Вот и все. Теперь давайте посмотрим, что есть в файле status.xsl (это всего лишь его заготовка; полная версия находится здесь).

Хорошей практикой является создание XSL-документов только один раз во время работы приложения. У нас есть статический вспомогательный метод XSLDocument.make() для этого:

Обратите внимание на то, что мы используем XSLT 2.0. Встроенная реализация XSLT на языке Java не поддерживает версию 2.0, и для ее работы мы используем две зависимости Maven Saxon.

Все, что вам нужно сделать, чтобы начать использовать jcabi-xml для преобразования XSL, это добавить эту зависимость в ваш pom.xml:

Если у вас возникли какие-либо проблемы или предложения, не стесняйтесь создать проблему в трекере проблем GitHub.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-05 at 22:13

sixnines availability badge   GitHub stars