ПРИМЕНЕНИЕ XSLT-ТРАНСФОРМАЦИИ ДЛЯ ПОЛУЧЕНИЯ ПЕРСОНАЛИЗИРОВАННЫХ EXCEL ДОКУМЕНТОВ
© Бердников С.Ю.*
Уфимский государственный авиационный технический университет, г. Уфа
В этой статье приводятся два способа генерации на стороне сервера документов формата XML в документы формата XLS и XLSX при помощи XSLT-трансформации и таких технологий как XSL, XPATH, языка программирования PHP. Документы формата XLS и XLSX отличаются за счет измененной структуры документов Excel, начиная с версии Microsoft Office 2007. В начале статьи приводятся история и краткое описание примененных технологий, далее разъясняются различия структуры документов Excel 1997-2003 и Excel 2007-2010, а потом приводятся две схемы, с описанием шагов серверной генерации этих документов.
В настоящее время язык разметки XML широко используется для обмена данными, создания, хранения и обмена документами, а также для веб-контента. XML (extensible Markup Language - расширяемый язык разметки) был утвержден в 1998 г., начало ему дал SGML (Standard Generalized Markup Language - стандартный обобщённый язык разметки). Хотя SGML и объединяет в себе много возможностей, он сложен и разработка с его помощью обходится дорого, что повлекло за собой создание довольно простого и понятного языка разметки HTML, в 1992 г. Он помог бурному развитию интернета в то время, но из-за роста количества документов и постоянно увеличивающимся требованиям к ним, простота стала его главным недостатком. В результате на свет появился язык XML, сочетающий в себе простоту HTML, логику разметки SGML и удовлетворяющий требованиям Интернета. На основе XML также были описаны такие технологии, как XSL, XPath и другие. XSL (eXtensible Stylesheet Language - расширяемый язык стилей) - семейство рекомендаций консорциума W3C, описывающее языки преобразования и визуализации XML-документов. XPath (XML Path Language - XML язык пути) -язык запросов к элементам XML-документа. XSLT (eXtensible Stylesheet Language Transformations) - язык преобразования XML-документов [1]. Спецификация XSLT входит всостав XSL и является рекомендацией W3C.
Все мы когда-либо сталкивались или даже постоянно работаем с табличным процессором Excel от компании Microsoft. С версии Excel 2003 в нем появилась полноценная поддержка XML-формата, документ ExcelML или
* Магистрант кафедры Автоматизированных систем управления. Научный руководитель: Миронов В.В., профессор кафедры Автоматизированные системы управления, доктор технических наук, профессор.
160 ИНТЕЛЛЕКТУАЛЬНЫЙ ПОТЕНЦИАЛ XXI ВЕКА: СТУПЕНИ ПОЗНАНИЯ
SpreadsheetML (Spreadsheet Markup Language - язык разметки электронной таблицы). Построенные при помощи этого языка документы являются, и XML-документами, и полноценными Excel документами. Excel может открывать, изменять и сохранять такие документы, а также сохранять стандартные XLS документы в этом формате. В новых же версиях Excel 2007-2010 стандартные документы имеют формат XLSX. С виду это закрытый формат как и XLS, но на самом деле это документ Open Office XML, который представляет собой контейнер, содержащий несколько компонентов [2]. Этот контейнер является сжатой ZIP-папкой, а его компонентами - хранящиеся в ней файлы. Также предусмотрен формат XLSMc поддержкой макросов.
Реализация моей работы заключается в создании программы серверной генерации персонализированного документа Excel из XML данных, используя XSL-инъекции. Сама программа состоит из двух частей, скриптов написанных на языке программирования PHP и XSL шаблона. Скрипты, преобразующие при помощи функции XSLTProcessor() XSL шаблон и XML данные в документ Excel, также работают с файлами сжатой ZIP-папки и переименовывают ее в формат XLSX [3]. XSL шаблон определяет разметку будущего документа Excel и заполняет его данными из XML-документа, при помощи XSLT-трансформации. Серверная генерация документов Excel 2003 представлена на следующем рисунке:
1. Пользователь посылает запрос на сервер для генерации Excel документа;
2. сервер обрабатывает запрос и создает XSL шаблон;
3. достав XML-документ с персональными данными, сервер применяет к нему XSL шаблон;
4. путем XSLT-трансформации XML документ преобразуется в XLS документ;
5. персонализированныйXLS-документ отправляется пользователю.
Трансформация
Рис.1. Серверная генерация документа XLS
Технические науки
161
Для версии Excel 2007-2010 рис. 2:
ЕЕ:
XML
Трансформация
Рис. 2. Серверная генерация документов XLSX
1. Пользователь посылает запрос на сервер для генерации Excel документа;
2. сервер обрабатывает запрос и создает XSL шаблон;
3. достав XML-документ с персональными данными, сервер применяет к нему XSL шаблон;
4. путем XSLr-трансформации XML документ преобразуется в новый XML-документ;
5. заранее подготавливается контейнер Open XML в заданной форме, без данных;
6. новый XML-документ помещается в контейнер;
7. контейнер запаковывается и становится Z/P-папкой, которая переименовывается вXLSXилиXLSMb зависимости от наличия макросов.
8. персонализированный Excel документ отправляется пользователю.
Таким образом, с помощью серверных сценариев, не требующих запуска процессора Excel, и шаблона XSL можно создавать персонализированные Excel документы различных версий. Программирование XSL-спецификации персонализации в версиях Excel 2007-2010 на начальном этапе может быть выполнено в среде Excel. Для этого разработчик создает документ и определяет его структуру. Правила расстановки пользовательских данных задаются в том же документе с помощью введенных в тексте XSL -инструкций - XSL -инъекций.
Список литературы:
1. Стивен Холзнер «XSLT. Библиотека программиста». - издат.: Питер, 2002. - 544 с.
2. Уокенбах Джон Microsoft Excel 2010. Библия пользователя. - издат.: Диалектика, 2011. - 912 с.
3. Валиков Алексей Технология XSLT. - издат.: BHV-СПб, 2001. - 544 с.