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