XSLT как средство формирования «красивых» отчетов. Или трансформируем XML во что угодно.
Сразу ныряем с головой в следующую бизнес задачу - клиент просит, чтобы ответ от API метода возвращающего отчёт о продажах за месяц, приходил бы не в xml виде, а в виде “визуального” отчёта. Таковы пожелания клиента, а наши пожелания это минимальные изменения в кодовой базе продукта и максимальное упрощение нашей жизни. Сложив эти пожелания мы придём к единственно верному решению данной задачи - трансформация xml отчёта в “красивый“ html отчёт при помощи xslt преобразования.
Приступим к выполнению задачи.
Ранее заказчику, по средствам API, наш сервис возвращал XML отчет с информацией об автомобильных продажах в дилерском центре заказчика, который выглядел так
Теперь нам необходимо допилить сервис, чтобы он возвращал отчет в 'красивом' виде.
Остается на уже имеющийся скелет натянуть мышцы и кожу в виде HTML и CSS, в этом нам поможет xslt.
Натягиваем и смотрим что получается
Теперь рассмотрим само преобразование
В элементе output укажем ожидаемый формат и кодировку, а также включим форматирование текста на выходе.
Создадим шаблон, который будет выбирать содержимое из корневого элемента Root и начнем задавать HTML структуру, а также зададим стили.
Теперь перейдем к парсингу xml и формированию отчета. Оба этих действия умещаются в двух циклах for-each
Сразу отвечаю на 2 назревших вопроса:
1)Нет, xslt преобразования я пишу не в VS code, а в oxygen (всем советую как минимум ознакомиться с этой программой)
2)Да, в этом примере я верстаю на таблицах. И что вы мне сделаете? Я в другом городе.
В принципе план минимум выполнен, но хочется в отчете еще видеть суммарную прибыль за месяц. Дополним преобразование следующим кодом, создадим переменную в которой будем считать выручку за каждый месяц, после чего выводить ее в отчете
В конечном итоге отчет имеет следующий вид
В заключение, хотелось бы подчеркнуть одно из преимуществ использования XSLT-преобразований для решения подобных задач: быстрая скорость разработки и интеграции в ваш сервис. Согласитесь, что гораздо удобнее один раз добавить несколько строчек кода для интеграции XSLT-преобразований, чем при каждом микрообновление формирования отчёта выкатывать обновления всего приложения.
Ссылки на наши ресурсы – ниже: