Саксонский XSLT
Saxon — это процессор XSLT и XQuery, созданный Майклом Кеем и в настоящее время разрабатываемый и поддерживаемый его компанией Saxonica. Существуют с открытым исходным кодом , а также с закрытым исходным кодом коммерческие версии . Существуют версии для Java , JavaScript [1] и .NET .
Текущая версия по состоянию на январь 2023 г. — 12.0. [2]
Версии [ править ]
Первоначальная линия развития Saxon завершилась серией версии 6. Это серия процессоров XSLT 1.0. Текущая версия 6.5.5 не подвергается дальнейшему развитию, кроме обслуживания. Серия 6 доступна только для языка программирования Java.
Текущая линия разработки, Saxon 12, реализует спецификации XSLT 3.0 и XQuery 3.1. Saxon 12 может обрабатывать таблицы стилей XSLT 1.0 и XSLT 2.0. (XSLT 2.0 и 3.0 обратно совместимы с XSLT 1.0. [3] ), а также включает выборочную поддержку предлагаемой спецификации XSLT 4.0. [4]
Существует две отдельные исходные базы: исходный код Java и исходный код JavaScript. Исходный код Java используется для создания продуктов для трех платформ: SaxonJ (для Java и других языков JVM, таких как Scala), SaxonCS (для C# и других языков .NET, таких как VB.NET) и SaxonC (с API для C, C++). , Python и PHP). Исходная база JavaScript используется для создания SaxonJS, который работает в веб-браузерах и под управлением Node.js.
Версии, созданные на Java, имеют три уровня: Home Edition предлагает минимальный уровень соответствия стандартам, определенным в спецификациях, как продукт с открытым исходным кодом. Professional Edition добавляет специфичные для конкретного поставщика функциональные возможности, не требуемые стандартами, например ряд функций расширения и вариантов сериализации. Enterprise Edition добавляет расширенные функции (определенные в стандартах W3C как необязательные), включая понимание схемы и потоковую передачу, а также функции, связанные с производительностью, такие как многопоточное выполнение и генерация байт-кода.
Java-C#, Продукт SaxonCS создан на основе исходной базы Java с помощью специального транспилятора написанного на XSLT (см. https://markupuk.org/webhelp/index.html#ar04.html ). По состоянию на апрель 2022 года на этой платформе предлагается только версия Enterprise Edition.
С 2004 по 2009 год Saxon был доступен в двух отдельных формах: Saxon-B и Saxon-SA. Оба они были построены на одинаковой кодовой базе. Saxon-B представлял собой программное обеспечение с открытым исходным кодом, выпущенное под лицензией Mozilla Public License , а Saxon-SA был коммерческим продуктом с закрытым исходным кодом.
Разница между Saxon-B и Saxon-SA заключалась в том, что B был «базовым», а SA — «осведомленным о схеме». Эти термины являются ссылками на термины спецификаций XSLT 2.0 и XQuery 1.0. Процессор, поддерживающий схему, может использовать XML-схему W3C для определения типов данных различных элементов в исходном XML-документе(ах). Эти типы данных затем можно использовать в командах XPath 2.0 и XSLT 2.0. «Базовый» процессор XSLT 2.0 не может использовать информацию о типизации данных.
Saxon обеспечивает строгое соответствие рекомендациям W3C XSLT 2.0, XPath 2.0 и 3.0 и XQuery 1.0 и 3.0, а также реализует XML-схему 1.0 и 1.1. По состоянию на 2021 год текущая версия (10.6) соответствует рекомендациям W3C для XSLT 3.0, XPath 3.1 и XQuery 3.1.
Исходный код Saxon написан на Java. В течение 2005–2006 годов Дэвид Петерсон и другие продемонстрировали, что Saxon можно кросс-компилировать для работы на .NET с помощью кросс-компилятора IKVM.NET , запустив Saxon.NET как отдельный продукт, независимый от исходного разработчика. С выпуском Saxon 8.7 компания Saxonica приняла эту технологию, и начиная с этого выпуска все версии выпускаются одновременно для Java и .NET. В версии продукта .NET отсутствуют функции, специфичные для платформы Java (например, интеграция с JDOM , Dom4j и XOM ), а вместо этого предоставляются функции, которые интегрируются с возможностями обработки XML платформы .NET.
В 2012 году, после серии прототипов, Saxonica выпустила Saxon Client Edition (Saxon-CE), версию продукта, адаптированную для работы в среде браузера. Это достигается за счет адаптации исходного кода Java так, чтобы его можно было кросс-компилировать в JavaScript с помощью кросс-компилятора GWT, созданного Google . Saxon-CE предоставляет первую реализацию XSLT 2.0, работающую в браузере, а также расширяет язык таким образом, что он может не просто генерировать HTML, а напрямую обрабатывать взаимодействие с пользователем. С выпуском Saxon-CE 1.1 в феврале 2013 года исходный код продукта стал открытым. В феврале 2016 года Майкл Кей объявил, что Saxonica работает над заменой Saxon-CE, написанной на чистом JavaScript и получившей название Saxon-JS. [5]
Майкл Кей , автор Saxon, был редактором спецификации XSLT 2.0, а также редактором проекта XSLT 3.0.
Особенности [ править ]
Версии Saxon, доступные для платформ Java, C (включая PHP и Python) и .NET, построены на основе единой базы кода. Последняя версия построена с использованием транспилера . [6] Все версии технологической платформы имеют одни и те же возможности и доступны с тремя различными наборами функций на двух разных условиях лицензирования. Для каждой из этих технологических платформ существует продукт с открытым исходным кодом Saxon-HE, имеющий лицензию MPL -2.0. Он обеспечивает базовую функциональность XSLT 3.0, XPath 3.1 и XQuery 3.1, как определено соответствующими спецификациями. Кроме того, Saxon-HE реализует определенные функции, которые в спецификации XSLT 3.0 объявлены как необязательные и которые ранее были зарезервированы для коммерческих версий, такие как динамическая оценка XPath 3.1 и функции высшего порядка в XSLT 3.0. Коммерческие версии называются Saxon-PE и Saxon-EE. Подробную и актуальную матрицу функций можно найти на веб-сайте Saxonica .
Четвертая технологическая платформа — JavaScript. Ранее процессор XSLT с открытым исходным кодом Saxon-CE был кросс-компилирован из общего исходного кода Java с использованием GWT . SaxonJS — это совершенно новая реализация JavaScript. Исходники XSLT можно скомпилировать с помощью Saxon-EE или с помощью встроенного XSLT-компилятора на основе XSLT, который создает менее оптимизированный код. С другой стороны, XSLT-компилятор на основе XSLT позволяет динамическую компиляцию и выполнение XSLT. Хотя SaxonJS поддерживает большинство функций XSLT 3.0 и XPath 3.1, доступных в Saxon-HE, SaxonJS не поддерживает XQuery. исходного кода, но его можно бесплатно использовать в браузере или в Node.js. В отличие от Saxon-HE и прекращенного Saxon-CE, SaxonJS не имеет открытого [7]
См. также [ править ]
Ссылки [ править ]
- ^ «Саксонский клиент версии 1.0» . Саксоника . Проверено 14 августа 2012 г.
- ^ Официальный сайт Saxon XSLT
- ^ Эта Рекомендация основана на успехе [XSLT 1.0], который был опубликован 16 ноября 1999 года. В язык было добавлено множество новых функций (см. J.2 Новые функциональные возможности), сохраняя при этом высокий уровень обратной совместимости. XSL-преобразования (XSLT), версия 2.0
- ^ Преобразования XSL (XSLT), версия 4.0.
- ^ «Представляем Saxon-JS» .
- ^ https://www.saxonica.com/papers/markupuk-2021mhk.pdf [ пустой URL PDF ]
- ^ «Документация SaxonJS» .