XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Сразу ныряем с головой в следующую бизнес задачу - клиент просит, чтобы ответ от API метода возвращающего отчёт о продажах за месяц, приходил бы не в xml виде, а в виде “визуального” отчёта. Таковы пожелания клиента, а наши пожелания это минимальные изменения в кодовой базе продукта и максимальное упрощение нашей жизни. Сложив эти пожелания мы придём к единственно верному решению данной задачи - трансформация xml отчёта в “красивый“ html отчёт при помощи xslt преобразования.

Приступим к выполнению задачи.

Ранее заказчику, по средствам API, наш сервис возвращал XML отчет с информацией об автомобильных продажах в дилерском центре заказчика, который выглядел так

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Теперь нам необходимо допилить сервис, чтобы он возвращал отчет в 'красивом' виде.

Остается на уже имеющийся скелет натянуть мышцы и кожу в виде HTML и CSS, в этом нам поможет xslt.

Натягиваем и смотрим что получается

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Теперь рассмотрим само преобразование

В элементе output укажем ожидаемый формат и кодировку, а также включим форматирование текста на выходе.

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Создадим шаблон, который будет выбирать содержимое из корневого элемента Root и начнем задавать HTML структуру, а также зададим стили.

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Теперь перейдем к парсингу xml и формированию отчета. Оба этих действия умещаются в двух циклах for-each

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

Сразу отвечаю на 2 назревших вопроса:

1)Нет, xslt преобразования я пишу не в VS code, а в oxygen (всем советую как минимум ознакомиться с этой программой)

Пруфы
Пруфы

2)Да, в этом примере я верстаю на таблицах. И что вы мне сделаете? Я в другом городе.

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

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

В конечном итоге отчет имеет следующий вид

XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.

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

Ссылки на наши ресурсы – ниже:

11
Начать дискуссию