Открыть сервис

XSLT

XSLT (eXtensible Stylesheet Language Transformations) — это язык программирования, предназначенный для преобразования XML-документов в другие форматы, такие как XML, HTML, XHTML, plain text или другие структурированные документы. XSLT является частью семейства технологий XSL (eXtensible Stylesheet Language), разработанного консорциумом W3C (World Wide Web Consortium). Основная функция XSLT — это описание правил трансформации, которые применяются к исходному XML-документу для создания нового документа с иной структурой и содержимым.

История и развитие

Разработка XSLT началась в конце 1990-х годов как часть более широкой инициативы W3C по созданию стандартов для работы с XML. Первая версия, XSLT 1.0, была рекомендована W3C 16 ноября 1999 года. Она быстро стала стандартом де-факто для преобразования XML, благодаря своей простоте и эффективности для решения типовых задач. Параллельно развивался язык XPath (XML Path Language), который используется в XSLT для навигации по XML-дереву и выборки узлов.

Вторая версия, XSLT 2.0, была опубликована 23 января 2007 года. Она принесла значительные улучшения: поддержку схем (XSD), регулярных выражений, более мощные функции группировки, работу с последовательностями (sequences) и улучшенную обработку строк. XSLT 2.0 также стал более строгим в отношении типов данных. Однако внедрение XSLT 2.0 шло медленнее, чем версии 1.0, из-за сложности реализации и необходимости обновления существующих процессоров.

Третья версия, XSLT 3.0, была рекомендована W3C 8 июня 2017 года. Она добавила поддержку потоковой обработки (streaming) для работы с очень большими XML-документами без загрузки их целиком в память, ввела концепцию «пакетов» (packages) для модульного программирования, а также расширила возможности XPath и добавила новые инструкции, такие как <xsl:iterate> и <xsl:merge>. XSLT 3.0 также включает в себя полную поддержку XPath 3.1.

Основные принципы работы

XSLT-процессор — это программа, которая принимает на вход два документа: исходный XML-документ и XSLT-преобразование (стиль), написанное на языке XSLT. Результатом работы процессора является выходной документ (результирующее дерево).

Процесс преобразования основан на шаблонной модели. XSLT-преобразование состоит из набора правил (шаблонов), каждое из которых сопоставляется с определённым узлом (элементом, атрибутом, текстом) в исходном XML-дереве. Когда процессор находит узел, соответствующий шаблону, он применяет инструкции, содержащиеся в этом шаблоне, и генерирует часть выходного документа. Этот процесс рекурсивен: шаблон может вызывать другие шаблоны или обрабатывать дочерние узлы текущего элемента.

Ключевая роль в навигации по XML-дереву принадлежит языку XPath. XPath позволяет выбирать узлы по их имени, положению, иерархии, атрибутам и другим условиям. Например, выражение //book[price>35] выберет все элементы <book> во всём документе, у которых дочерний элемент <price> имеет значение больше 35.

Синтаксис и структура XSLT-преобразования

XSLT-преобразование само является XML-документом. Его корневой элемент<xsl:stylesheet> или <xsl:transform>. Внутри него объявляются пространства имён, задаются параметры и определяются шаблоны.

Основные элементы XSLT:

Пример простого преобразования

Допустим, есть XML-документ с информацией о книгах:

``xml <books> <book> <title>Война и мир</title> <author>Лев Толстой</author> <year>1869</year> </book> <book> <title>Преступление и наказание</title> <author>Фёдор Достоевский</author> <year>1866</year> </book> </books> ``

XSLT-преобразование, которое превращает его в HTML-таблицу:

```xml <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">;

<xsl:output method="html" encoding="UTF-8" indent="yes"/>

<xsl:template match="/"> <html> <body> <h2>Библиотека</h2> <table border="1"> <tr> <th>Название</th> <th>Автор</th> <th>Год</th> </tr> <xsl:for-each select="books/book"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> <td><xsl:value-of select="year"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template>

</xsl:stylesheet> ```

Применение

XSLT широко используется в различных областях, где требуется обработка XML-данных:

Сравнение XSLT 1.0, 2.0 и 3.0

ХарактеристикаXSLT 1.0XSLT 2.0XSLT 3.0
Год рекомендации199920072017
Поддержка схем (XSD)НетДаДа
Регулярные выраженияНетДа (через функции)Да
ГруппировкаОграниченная (через Muenchian method)Встроенная (xsl:for-each-group)Улучшенная
Потоковая обработкаНетНетДа
МодульностьОграниченная (xsl:import/include)УлучшеннаяПакеты (xsl:package)
ТипизацияСлабаяСтрогая (опционально)Строгая (опционально)
Работа с последовательностямиНет (только наборы узлов)ДаДа
XPath1.02.03.1

Процессоры XSLT

Существует множество реализаций XSLT-процессоров, как коммерческих, так и с открытым исходным кодом. Наиболее известные:

Критика и ограничения

Несмотря на широкое распространение, XSLT имеет ряд критикуемых особенностей:

Источники

  1. W3C Recommendation: XSL Transformations (XSLT) Version 1.0, 1999.
  2. W3C Recommendation: XSL Transformations (XSLT) Version 2.0, 2007.
  3. W3C Recommendation: XSL Transformations (XSLT) Version 3.0, 2017.
  4. Michael Kay. XSLT 2.0 and XPath 2.0 Programmer's Reference. Wrox, 2008.
  5. Документация проекта Saxon (Saxonica).
  6. Документация Apache Xalan.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →