XSLT

редактировать
Язык преобразования XML-документов
XSLT
Paradigm Декларативный
Разработчик W3C
Впервые появился1998
Стабильный выпуск 3.0
Веб-сайтПреобразование W3C
Основные реализации
libxslt, Saxon, Xalan
Под влиянием
DSSSL

XSLT (Extensible Stylesheet Language Transformations ) - это язык для преобразования XML документы в другие XML-документы или другие форматы, такие как HTML для веб-страниц, обычный текст или объекты форматирования XSL, которые могут впоследствии могут быть преобразованы в другие форматы, такие как PDF, PostScript и PNG. XSLT 1.0 широко поддерживается современными веб-браузерами.

Исходный документ не изменяется; скорее, новый документ создается на основе содержания существующего. Обычно входными документами являются файлы XML, но можно использовать все, что процессор может построить XQuery и модель данных XPath, например таблицы реляционной базы данных или географические информационные системы..

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

Содержание
  • 1 История
  • 2 Модель проектирования и обработки
  • 3 XPath
  • 4 Сравнение XQuery
  • 5 Типы носителей
  • 6 Примеры
    • 6.1 Пример 1 (преобразование XML в XML)
    • 6.2 Пример 2 (преобразование XML в XHTML)
  • 7 Реализации процессора
    • 7.1 Производительность
  • 8 См. Также
  • 9 Ссылки
  • 10 Дополнительная литература
  • 11 Внешние ссылки
История

На XSLT влияет функциональных языков, а также языков сопоставления текстовых шаблонов, таких как SNOBOL и AWK. Его непосредственным предшественником был DSSSL, который сделал для SGML то же, что XSLT делает для XML.

  • XSLT 1.0: XSLT был частью World Wide Web Consortium (W3C) разработал eXtensible Stylesheet Language (XSL) в 1998–1999 годах, проект, в котором также были созданы XSL-FO и XPath. Некоторые члены комитета по стандартам, которые разработали XSLT, в том числе Джеймс Кларк, редактор, ранее работали над DSSSL. XSLT 1.0 был опубликован как рекомендация W3C в ноябре 1999 года. Несмотря на свой возраст, XSLT 1.0 по-прежнему широко используется (по состоянию на 2018 год), поскольку более поздние версии изначально не поддерживаются в веб-браузерах или для таких сред, как LAMP.
  • XSLT 2.0: после неудачной попытки создать версию 1.1 в 2001 году рабочая группа XSL объединила усилия с рабочей группой XQuery для создания XPath 2.0, с более богатой моделью данных и системой типов, основанной на XML-схеме. Основываясь на этом, XSLT 2.0, разработанный под редакцией Майкла Кея, достиг статуса рекомендации в январе 2007 года. К наиболее важным нововведениям в XSLT 2.0 относятся:
    • Обработка строк с помощью регулярные выражения
    • Функции и операторы для управления датами, временем и продолжительностью
    • Несколько выходных документов
    • Группировка (создание иерархической структуры из плоских входных последовательностей)
    • Более богатый тип система и усиленная проверка типов
  • XSLT 3.0: стал Рекомендацией W3C 8 июня 2017 года. Основные новые функции:
    • Потоковые преобразования : в предыдущих версиях весь входной документ должен был быть считан в память перед тем, как он могут быть обработаны, а вывод не может быть записан до завершения обработки. XSLT 3.0 поддерживает потоковую передачу XML, что полезно для обработки документов, слишком больших для размещения в памяти, или когда преобразования связаны в XML Pipelines.
    • пакетах, для улучшения модульности больших таблиц стилей.
    • Улучшенная обработка динамических ошибок, например, с помощью инструкции xsl: try.
    • Поддержка карт и массивов, позволяющая XSLT обрабатывать JSON, а также XML.
    • Функции теперь могут быть аргументами для других функций (высшего порядка).
Модель проектирования и обработки
Схема основных элементов и потока процессов преобразований расширяемого языка таблиц стилей.

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

Типичный процессор ведет себя следующим образом. Сначала, предполагая, что таблица стилей уже была прочитана и подготовлена, процессор строит исходное дерево из входного XML-документа. Затем он обрабатывает корневой узел исходного дерева, находит наиболее подходящий шаблон для этого узла в таблице стилей и оценивает содержимое шаблона. Инструкции в каждом шаблоне обычно предписывают процессору либо создать узлы в результирующем дереве, либо обработать больше узлов в исходном дереве таким же образом, как и корневой узел. Наконец, результирующее дерево сериализуется как текст XML или HTML.

XPath

XSLT использует XPath для идентификации подмножеств дерева исходного документа и выполнения вычислений. XPath также предоставляет ряд функций, которые сам XSLT расширяет.

XSLT 1.0 использует XPath 1.0, а XSLT 2.0 использует XPath 2.0. XSLT 3.0 будет работать с XPath 3.0 или 3.1. В случае версий 1.0 и 2.0 спецификации XSLT и XPath были опубликованы в один день. Однако в версии 3.0 они больше не синхронизировались; XPath 3.0 стал Рекомендацией в апреле 2014 года, а в феврале 2017 года - XPath 3.1; В июне 2017 года последовал XSLT 3.0.

XQuery сравнил

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

Стандарты XSLT 2.0 и XQuery 1.0 были разработаны отдельными рабочими группами в рамках W3C, работая вместе, чтобы обеспечить единый подход там, где это необходимо. Они используют одну и ту же модель данных, систему типов и библиотеку функций, и оба включают XPath 2.0 в качестве подъязыка.

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

. Поскольку эти два языка происходят из разных сообществ, XSLT лучше справляется с описательными документами с более гибкой структурой, в то время как XQuery более эффективен в обработке данных, например, при выполнении реляционных объединений.

Типы мультимедиа

Элемент может дополнительно принимать атрибут media-type, который позволяет установить тип носителя (или тип MIME) для результирующего вывода, например: . Рекомендация XSLT 1.0 рекомендует более общие типы атрибутов text / xmlи application / xml, поскольку долгое время для XSLT не было зарегистрированного типа носителя. За это время text / xslстал стандартом де-факто. В XSLT 1.0 не было указано, как следует использовать значения media-type.

С выпуском XSLT 2.0 W3C рекомендовал регистрацию типа носителя MIME application / xslt + xml, а позже он был зарегистрирован в Internet Assigned Numbers Authority.

В рабочих черновиках XSLT до 1.0 использовался text / xslв примерах внедрения, и этот тип был реализован и продолжает продвигаться Microsoft в Internet Explorer и MSXML. Это также широко признано в инструкции обработки xml-stylesheetдругими браузерами. Поэтому на практике пользователи, желающие управлять преобразованием в браузере с помощью этой инструкции обработки, обязаны использовать этот незарегистрированный тип носителя.

Примеры

В этих примерах используется следующий входящий XML-документ

ДжонСмитМоркаИсминциус

Пример 1 (преобразование XML в XML)

Эта таблица стилей XSLT предоставляет шаблоны для преобразования документа XML:

Результатом его оценки является новый XML-документ, имеющий другую структуру:

JohnMorka

Пример 2 (преобразование XML в XHTML)

Обработка следующего примера файла XSLT

Тестирование примера XML

XSLT - XSLT

  • ,
  • с входным XML-файлом, показанным выше, приводит к следующему XHTML (пробел здесь исправлен для ясности):

    Пример тестирования XML

    XSLT - XSLT

    • Исминциус, Морка
    • Смит, Джон

    Этот XHTML генерирует вывод, показанный ниже, при отображении в веб-браузере.

    Визуализированный XHTML, сгенерированный из входного файла XML и преобразования XSLT.

    Для того, чтобы веб-браузер мог автоматически применять преобразование XSL к отображаемому XML-документу, инструкция обработки таблицы стилей XML может быть вставлена ​​в XML. Так, например, если таблица стилей в примере 2 выше была доступна как «example2.xsl», к исходному входящему XML можно было бы добавить следующую инструкцию:

    В этом примере text / xslравно технически неверен в соответствии со спецификациями W3C (в которых говорится, что тип должен быть application / xslt + xml), но это единственный тип носителя, который широко поддерживается браузерами по состоянию на 2009 год.

    Реализации процессоров
    • RaptorXML от Altova - это процессор XSLT 3.0, доступный в наборе средств разработки XMLSpy и как отдельная реализация сервера, вызываемая с помощью интерфейса REST.
    • IBM предлагает обработку XSLT встроена в специализированное аппаратное устройство под брендом Datapower.
    • libxslt - это бесплатная библиотека, выпущенная по лицензии MIT, который можно повторно использовать в коммерческих приложениях. Он основан на libxml и реализован на C для скорости и портативности. Он поддерживает расширения XSLT 1.0 и EXSLT.
    • Microsoft предоставляет два процессора XSLT (оба Только XSLT 1.0). Более ранний процессор MSXML предоставляет интерфейсы COM; из MSXML 4.0 он также включает служебную программу командной строки msxsl.exe. Среда выполнения.NET включает отдельный встроенный процессор XSLT в свою библиотеку System.Xml.Xsl.
    • Saxon - это процессор XSLT 3.0 и XQuery 3.1 с открытым исходным кодом и проприетарные версии для автономной работы и для Java, JavaScript и.NET. Отдельный продукт Saxon-JS предлагает обработку XSLT 3.0 на Node.js и в браузере.
    • Xalan - это процессор XSLT 1.0 с открытым исходным кодом от Apache Software Foundation доступно для Java и C ++. Вариант процессора Xalan включен в качестве процессора XSLT по умолчанию в стандартный дистрибутив Java от Oracle.
    • Веб-браузеры: Safari, Chrome, Firefox, Opera и Internet Explorer поддерживают XSLT 1.0 (только). Браузеры могут выполнять преобразования XML-файлов на лету и отображать результат преобразования в окне браузера. Это делается либо путем встраивания XSL в документ XML, либо путем ссылки на файл, содержащий инструкции XSL, из документа XML. Последний может не работать с Chrome для файлов из локальной файловой системы из-за его модели безопасности.

    Производительность

    Самые ранние XSLT-процессоры были интерпретаторами. В последнее время все большее распространение получает генерация кода с использованием переносимых промежуточных языков (таких как байт-код Java или.NET Common Intermediate Language ) в качестве целевого. Однако даже интерпретирующие продукты обычно предлагают отдельные фазы анализа и выполнения, позволяя создавать оптимизированное дерево выражений в памяти и повторно использовать для выполнения нескольких преобразований. Это дает существенные преимущества в производительности в приложениях для публикации в Интернете, где одно и то же преобразование применяется много раз в секунду к разным исходным документам. Это разделение отражено в дизайне API обработки XSLT (например, JAXP ).

    В ранних XSLT-процессорах было очень мало оптимизаций. Документы таблиц стилей считывались в объектных моделях документов, и процессор воздействовал на них напрямую. Движки XPath также не были оптимизированы. Тем не менее, XSLT-процессоры все чаще используют методы оптимизации, имеющиеся в функциональных языках программирования и языках запросов к базам данных, такие как статическое переписывание дерева выражений (например, для вывода вычислений из циклов) и ленивое конвейерное вычисление для уменьшения объема памяти, занимаемого промежуточными результатами. (и разрешить «ранний выход», когда процессор может оценить выражение, такое как following-sibling :: * [1], без полной оценки всех подвыражений). Многие процессоры также используют представления дерева, которые значительно более эффективны (как в пространстве, так и во времени), чем реализации DOM общего назначения.

    В июне 2014 года Дебби Локетт и Майкл Кей представили платформу тестирования производительности с открытым исходным кодом для процессоров XSLT под названием XT-Speedo.

    См. Также
    Ссылки
    Дополнительная литература
    • XSLT Дуга Тидвелла, опубликованная O'Reilly (ISBN 0-596-00053-7 )
    • Поваренная книга XSLT Сала Мангано, опубликованная O'Reilly (ISBN 0-596-00974-7 )
    • Справочник программиста XSLT 2.0, автор Майкл Кей (ISBN 0-764-56909-0 )
    • Справочник программиста XSLT 2.0 и XPath 2.0 Майкла Кея (ISBN 978-0-470-19274-0 )
    • XSLT 2.0 Веб-разработка Дмитрия Кирсанова (ISBN 0-13-140635-3 )
    • XSL Companion, 2-е издание Нила Брэдли, опубликовано Addison-Wesley (ISBN 0-201-77083-0 )
    • XSLT и XPath on the Edge (Unlimited Edition) от Jeni Tennison, опубликовано Hungry Minds Inc, США ( ISBN 0-7645-4776-3 )
    • XSLT и XPath, Руководство по преобразованию XML Джона Роберта Гарднера и Зареллы Рендон, опубликованное Prentice-Hall (ISBN 0-13-040446-2 )
    • XSL-FO Дэйва Поусона, опубликовано O'Reilly (ISBN 978-0-596 -00355-5 )
    Внешние ссылки
    В Викиучебнике есть книга по теме: XML - Управление обменом данными / XSLT и таблицами стилей
    Викискладе есть материалы, связанные с преобразованиями расширяемого языка таблиц стилей.
    Документация
    Библиотеки кода XSLT
    • EXSLT - широко распространенная инициатива сообщества предоставляют расширения для XSLT.
    • FXSL - это библиотека, реализующая поддержку функций высшего порядка в XSLT. FXSL написан на самом XSLT.
    • Стандартная библиотека XSLT xsltsl предоставляет разработчику XSLT набор шаблонов XSLT для часто используемых функций. Они реализованы исключительно в XSLT, то есть не используют никаких расширений. xsltsl - это проект SourceForge.
    • Kernow Графический пользовательский интерфейс для Saxon, который предоставляет интерфейс для запуска преобразований.
    • xslt.js - Преобразование XML с помощью XSLT Библиотека JavaScript, которая преобразует XML с помощью XSLT в браузер.
    Последняя правка сделана 2021-06-22 06:45:30
    Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
    Обратная связь: support@alphapedia.ru
    Соглашение
    О проекте