Найти в Дзене
Работяги

Что такое xslt и с чем его едят

Привет, я Никита Ковалевский, специалист группы сопровождения, представляю IT сообщество Работяги. В этом сообществе ты можешь поделиться своими проблемами в разработке и найти интересующие тебя вопросы из сферы IT. Зачастую при работе с большим количеством сервисов, которые возвращают ответы в разном виде, можно столкнуться с проблемой, что ответ от одного сервиса нельзя передать на вход другому без предварительной обработки. В рамках данной стати мы рассмотрим решение данной проблемы и научимся преобразовывать xml при помощи xslt. Первое с чего хочется начать - это краткое определения для таких понятий как xml и xslt. XML - это расширяемый язык разметки, предназначенный для хранения и передачи данных. XSLT - это язык преобразования xml,HTML и XHTML. Итак, рассмотрим ситуацию, когда какой-то внешний сервис возвращает нам ответ в xml, но не в том формате, который мы ожидаем. Естественно мы не будем переписывать работу нашего безупречного сервиса под новую сущность. Тогда как же быть в

Привет, я Никита Ковалевский, специалист группы сопровождения, представляю IT сообщество Работяги. В этом сообществе ты можешь поделиться своими проблемами в разработке и найти интересующие тебя вопросы из сферы IT.

Зачастую при работе с большим количеством сервисов, которые возвращают ответы в разном виде, можно столкнуться с проблемой, что ответ от одного сервиса нельзя передать на вход другому без предварительной обработки. В рамках данной стати мы рассмотрим решение данной проблемы и научимся преобразовывать xml при помощи xslt.

Первое с чего хочется начать - это краткое определения для таких понятий как xml и xslt.

XML - это расширяемый язык разметки, предназначенный для хранения и передачи данных.

XSLT - это язык преобразования xml,HTML и XHTML.

Итак, рассмотрим ситуацию, когда какой-то внешний сервис возвращает нам ответ в xml, но не в том формате, который мы ожидаем. Естественно мы не будем переписывать работу нашего безупречного сервиса под новую сущность. Тогда как же быть в такой ситуации? Как заставить подружиться xml ответ от одного сервиса, с другим нашим сервисом, который ожидает на вход xml, но с другой структурой? В таких случаях нам поможет xslt-преобразование, при помощи которого можно изменить xml до вида, который уже примет наша программа.

Рассмотрим пример. Предположим наша программа обрабатывает информацию о субъекте и оперирует такими сущностями как: Фамилия, Имя, Отчество, Серия паспорта, Номер паспорта.

Следовательно, на вход мы ожидаем xml в следующем формате:

Но сервис, предоставляющий информацию, передает ее в следующем виде:

-2

И вот на этом месте в ход вступает xslt преобразование, которое поможет нам изменить структуру полученного xml:

-3

Давайте немного разберемся в структуре данного преобразования:

1. Любое преобразование начинается с корневого элемента xsl:stylesheet и его обязательного атрибута version, который указывает какая версия xslt используется в данном преобразовании.

2. Затем идет элемент xsl:output. Данный элемент указывает каким образом будет выведено результирующее дерево в ответе. Чтобы указать в каком формате мы ожидаем ответ используется атрибут method, который принимает на вход одно из трех значений (xml, html, text).

3. Затем в нашем преобразовании идет элемент xsl:template. Данный элемент является шаблоном, внутри которого описаны правила, по которым будет собираться результирующий xml. В преобразовании элементов xsl:template может быть неограниченное количество, они могут иметь имена и входные параметры и вызывать друг друга. Если провести аналогию с программированием, то элемент xsl:template можно назвать функцией.

Теперь после создания xslt преобразования, мы можем импортировать его в наш сервис. Продемонстрирую как можно импортировать преобразование в вашу программу на примере языка c#:

Для работы с xslt в c# я использовал библиотеку System.Xml.Xsl
Для работы с xslt в c# я использовал библиотеку System.Xml.Xsl

В заключении можно подчеркнуть важность использования XSLT в современном разработке и обработке данных. XSLT является стандартом преобразования XML-документов, который позволяет упростить работу с данными, обеспечить гибкость и масштабируемость приложений и сэкономить большое количество времени.