XSLT - это язык преобразования XML, предназначенный для преобразования структурированных документов в другие форматы (например, XML, HTML и простой текст или, в XSLT 3, JSON). В вопросах следует использовать один из тегов xslt-1.0, xslt-2.0 или xslt-3.0 в зависимости от ситуации.

XSLT


Новости: По состоянию на 8 июня 2017 г. XSLT 3.0 является Рекомендацией Консорциума W3C.


Extensible Stylesheet Language Transformations (XSLT) - это язык программирования для преобразования XML- документов в другие XML-документы, текстовые документы или HTML- документы. Возможны другие форматы вывода (например, преобразование PDF с использованием XSL-FO).

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

Типичное преобразование выполняется следующим образом:

  1. Создается таблица стилей (обычно .xsl файл).
  2. Создается источник данных XML (например, .xml файл).
  3. В процессор XSLT загружается содержимое как XSL, так и XML.
  4. XML-документ анализируется в дерево модели данных XPath ( XDM) (XDM аналогичен DOM).
  5. Дерево XDM просматривается для создания итогового документа.

Синтаксис XSLT основан на XML, что означает, что документы XSL также являются правильно сформированными документами XML. XSLT с упором на рекурсию заимствует принципы из функциональных языков, включая декларативное программирование, сопоставление с образцом и неизменяемые переменные.

Поскольку XSL написан в формате XML, его многословность не делает его лучшим выбором для программирования общего назначения. При правильном использовании преобразования XSL дают элегантные решения сложных проблем, которые труднее решить на императивных языках.

XSLT-процессоры и библиотеки

Процессоры XSLT 3.0

Процессоры XSLT 3.0 обратно совместимы с XSLT 2.0 и обычно XSLT 1.0.

  • Saxon предоставляет бесплатные и коммерческие процессоры и библиотеки командной строки XSLT 1.0, 2.0 и 3.0.
  • Exselt предоставляет бесплатный и коммерческий процессор командной строки XSLT 3.0 и библиотеки для.NET с поддержкой пакетов и потоковой передачи.
  • Raptor XML - это процессор XML и XBRL Altova, который с 2017 года поддерживает XSLT 1.0, 2.0 и XSLT 3.0, за исключением потоковой передачи. Раньше существовала бесплатная версия для командной строки, но она больше не доступна для загрузки.

Процессоры XSLT 2.0

Обратная совместимость с XSLT 1.0 не является обязательной, но большинство процессоров поддерживают ее.

  • Перечисленные выше Saxon, Raptor XML и Exselt также поддерживают XSLT 2.0.
  • QtXmlPatterns - это библиотека для использования XSLT 2.0 с Qt для C++, но ее создатели считают экспериментальной.
  • xmlpatterns - это утилита командной строки C++, использующая Qt для запуска XSLT 2.0 или XQuery.
  • gexslt Gobo XSLT 2.0, процессор XSLT 2.0, написанный на Eiffel, кажется, больше не выпускается, но поддерживает почти все XPath 2.0 и большую часть XSLT 2.0. Поставляется как процессор командной строки или библиотека Eiffel.
  • jd.xslt - это Java-реализация XSLT 1.1 (спецификация была отозвана в пользу версии 2.0, но уже содержит множество функций 2.0)
  • SOA Expressway XSLT - это процессор Intel XSLT 2.0 как часть SOA Expressway, отдельная загрузка больше не доступна, кроме как через Wayback Machine
  • PsychoPath поддерживает XPath 2.0 для использования в Eclipse с XSLT
  • Расширение XSLT 2.0 для Xerces, реализовано частично, но, похоже, прекращено
  • Gestalt, процессор XSLT 2.0, который лег в основу gexslt
  • IBM XML Feature Pack для WebSphere поддерживает XSLT 2.0, XPath 2.0 и XQuery 1.0
  • MarkLogic - это база данных XML, которая включает собственный процессор XSLT 2.0.
  • XMLPrime предоставляет процессор XSLT 2.0 для платформы.NET.

XSLT 1.0 процессоры

Неполный список известных и малоизвестных процессоров XSLT 1.0:

  • XT, самый первый процессор XSLT 1.0 от Джеймса Кларка, все еще доступен для загрузки
  • Xalan-Java - бесплатный процессор XSLT 1.0 для Java
  • Xalan-C - бесплатный процессор XSLT 1.0 для C++
  • System.Xml.Xsl содержит управляемый Microsoft процессор.NET XSLT 1.0.
  • MSXML содержит собственный процессор Microsoft ActiveX XSLT 1.0, используемый в версиях Internet Explorer.
  • xsltc - это процессор командной строки для создания скомпилированных сборок.NET для преобразований XSLT 1.0, не путать с xsltc Xalan.
  • xsltproc или libxslt - это библиотека C для XSLT 1.0 для проекта GNOME, эта версия используется PHP и другими языками, которые компилируются в C
  • TransforMiiX - это процессор XSLT 1.0 Mozilla Firefox, автономная версия которого может быть создана.
  • Sablotron - процессор XSLT 1.0, написанный на C++
  • Minoru XSL или MDC-XSL процессор XSLT 1.0, написанный на C++, кажется, заброшен
  • Xsltp.pl, XSLT 1.0-совместимый процессор, изначально написанный на Perl
  • XML::XSLT - модуль Perl с частично полным процессором XSLT 1.0.
  • Процессор XSLT 1.0 с открытым исходным кодом CFX XSLT для ColdFusion
  • XSLJIT от DataPower, XSLT-процессор с аппаратным ускорением, теперь используемый в WebSphere с XA35

Процессоры JavaScript XSLT 2.0

Эти процессоры включают XSLT 2.0 в браузере.

  • Frameless - это облегченная, частичная реализация XSLT 2.0 XSLT в JavaScript для использования в браузере.
  • Saxon CE - это процессор Saxon XSLT 2.0, кросс-скомпилированный в JavaScript для использования в браузере.
  • XSLTy - это версия Saxon-CE для командной строки, поддерживающая XSLT 2.0; требуется PhantomJS
  • Подключаемый модуль jQuery XPath 2.0, хотя и не является процессором XSLT, он позволяет использовать XPath 2.0 изнутри jQuery и, следовательно, изнутри браузера, что представляет интерес для большой группы пользователей.

Процессоры JavaScript XSLT 3.0

Эти процессоры включают XSLT 3.0 в браузере.

  • Saxon-JS эффективно заменяет Saxon-CE. Это среда выполнения XSLT 3.0, написанная на чистом JavaScript. Он выполняет таблицы стилей, которые должны быть скомпилированы Saxon-EE напрямую или из среды, такой как XML-редактор oXygen, который включает Saxon-EE.

Оболочки JavaScript для XSLT 1.0 в браузере

  • JAXP - это Java API для XML, необходимый при выполнении преобразований в Java через фабрику преобразователей.
  • 4XSLT, часть 4Suite, представляет собой процессор командной строки с открытым исходным кодом для XSLT 1.0, используемый в системах Unix, см. Справочную страницу
  • xslt.js - это XSLT 1.0-оболочка с открытым исходным кодом для преобразований в браузере.
  • Sarissa - надежная оболочка XSLT 1.0 и XML с открытым исходным кодом для преобразований в браузере.

Инструменты и библиотеки

Различные библиотеки и инструменты включают:

  • EXSLT, полустандартизированный набор функций и инструкций расширения XSLT 1.0
  • FXSL, совместимая с XSLT 1.0 и XSLT 2.0 и 3.0 библиотека с большим набором функций.
  • xslt-sb, большой набор функций XSLT 2.0, обширная документация на немецком языке
  • DocBook XSL - большой набор таблиц стилей XSLT для рендеринга DocBook XML для PDF, HTML или электронных книг.
  • FunctX - это большой набор функций XQuery и XSLT 2.0.
  • Стандартная библиотека XSLT предоставляет большой набор часто используемых функций XSLT 1.0.
  • Модульное тестирование XTC в XSLT и XQuery
  • Kernow - это бесплатный пользовательский интерфейс для запуска нескольких таблиц стилей и источников с Saxon 9.x
  • IronXSLT для поддержки XSLT intellisense в более старых версиях Visual Studio (в более новых версиях включен XSLT 1.0 intellisense)
  • Зарегистрируйте исправление для Visual Studio 2008 XSLT intellisense
  • Calabash - это реализация XProc, стандартизированного языка конвейера XML, используемого для многоэтапной обработки XML.
  • EXPath - это совместная работа по определению расширений XPath (и, следовательно, XSLT), включая средство ZIP, обработку двоичных данных, модуль HTTP и т. Д. Он развился из EXSLT 2.0.
  • Расширения SOAP и HTTP для Saxon
  • XmlSpectrum - это средство выделения синтаксиса для XSLT/XPath 3.0, написанное на XSLT.
  • См. Далее список инструментов, использующих XPath или основанных на технологиях, связанных с XSLT.

История

XSLT был предложен W3C и имеет три стандарта: 1.0 в 1999 году, 2.0 в 2007 году и 3.0, который был опубликован в 2017 году.

Теги вопросов

В вопросах следует использовать один из тегов xslt-1.0, xslt-2.0 или xslt-3.0, чтобы уточнить, какую версию XSLT требует или на которую ссылается вопрос. Если вы не уверены, какую версию поддерживает ваш процессор, вы можете проверить ее с помощью XSLT, используя<xsl:value-of select="system-property('xsl:version')"/>, например, запустив таблицу стилей (саморегулирующиеся XML и XSLT) https://martin-honnen.github.io/xslt/processorTest3.xml через ваш процессор.

Редакторы XSLT

Офлайн-редакторы

  • oXygen XML Editor ( xygenxml), кроссплатформенный XML-редактор с улучшенной поддержкой XSLT и XQuery, включая мощный отладчик и профилировщик производительности
  • Stylus Studio - это редактор XML, XQuery и XSD, включая поддержку XSLT.
  • Altova - это графический пользовательский интерфейс для разработки сопоставлений между файлами XML для создания XSLT путем перетаскивания.
  • Liquid XML позволяет отлаживать XSLT и создавать XSLT и XML графически.
  • EditiX - это редактор XML с поддержкой XSD, XSLT 1.0, 2.0 и 3.0, а также отладчик и профилировщик.

Онлайн-редакторы

Ресурсы

Курсы онлайн-обучения

  1. Основы XSLT 2 и XSLT 1 - Курс Pluralsight от Dimitre Novatchev
  2. Эволюция XPath: что нового в XPath 3.0 - видеокурс Pluralsight (4,5 часа)
  3. " Что нового в XSLT 3.0: Часть 1 " - видеокурс Pluralsight (5,5 часа), автор Димитр Новачев