Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Saxon — это процессор XSLT и XQuery, созданный Майклом Кеем и в настоящее время разрабатываемый и поддерживаемый его компанией Saxonica. Существуют версии с открытым и закрытым исходным кодом. Доступны версии для Java, JavaScript и .NET. По состоянию на январь 2023 года, текущая версия — 12.0.
Saxon is an XSLT and XQuery processor created by Michael Kay and now developed and maintained by his company, Saxonica. There are open source and also closed source commercial versions. Versions exist for Java, JavaScript and NET. The current version, as of January 2023, is 12.0.
Версии
Первоначальная линия разработки 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) и также включает выборочную поддержку предлагаемой спецификации XSLT 4.0. Существуют две отдельные кодовые базы: исходный код на 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 как необязательные), включая поддержку схем и потоковую обработку, а также функции, связанные с производительностью, такие как многопоточное выполнение и генерация байт-кода. Продукт SaxonCS строится из кодовой базы Java с помощью пользовательского транспойлера Java to C#, написанного на 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 Schema 1.0 и 1.1. По состоянию на 2021 год текущая версия (10.6) соответствует рекомендациям W3C для XSLT 3.0, XPath 3.1 и XQuery 3.1. Исходный код Saxon написан на Java. В 2005 году Дэвид Петерсон и другие продемонстрировали, что 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. Майкл Кей, автор Saxon, был редактором спецификации XSLT 2.0 и также является редактором проекта XSLT 3.0.
The original development line of Saxon ended with the version 6 series. This is a series of XSLT 1.0 processors. The current version, 6.5.5, is not undergoing further development aside from maintenance. The 6 series is only available for the Java programming language. The current development line, Saxon 12, implements the XSLT 3.0 and XQuery 3.1 specifications. Saxon 12 can process XSLT 1.0 and XSLT 2.0 stylesheets. (XSLT 2.0 and 3.0 are highly backwards compatible with XSLT 1.0.) and also includes selective support for the proposed XSLT 4.0 specification. There are two separate source bases: the Java source, and the JavaScript source. The Java source is used to generate products for three platforms: SaxonJ (for Java and other JVM languages such as Scala), SaxonCS (for C# and other NET languages such as VB. NET), and SaxonC (with APIs for C, C++, Python, and PHP). The JavaScript source base is used to generate SaxonJS, which runs in Web browsers and under Node. js. The Java built versions come in three levels: Home Edition offers the minimal level of standards conformance defined in the specifications, as an open source product. Professional Edition adds vendor specific functionality not required by the standards, for example a range of extension functions and serialisation options. Enterprise Edition adds advanced features (defined in the W3C standards as optional) including schema awareness and streaming, as well as performance related features such as multi threaded execution and bytecode generation. The SaxonCS product is built from the Java source base by means of a custom Java to C# transpiler written in XSLT (see https://markupuk. org/webhelp/index. html#ar04. html). As of April 2022, only the Enterprise Edition is offered on this platform. From 2004 until 2009, Saxon was available into two separate forms: Saxon B and Saxon SA. Both of these were built on similar codebases. Saxon B was open source software released under the Mozilla Public License, while Saxon SA was a closed source commercial product. The difference between Saxon B and Saxon SA was that B was "basic" while SA was "schema aware". These terms are references to terms in the XSLT 2.0 and XQuery 1.0 specification. A processor that is "schema aware" is able to use a W3C XML Schema to define the data types of the various elements in the source XML document(s). These data types can then be used in XPath 2.0 and XSLT 2.0 commands. A "basic" XSLT 2.0 processor is unable to use data typing information. Saxon offers strict conformance to the XSLT 2.0, XPath 2.0 and 3.0, and XQuery 1.0 and 3.0 W3C Recommendations, and also implements XML Schema 1.0 and 1.1. As of 2021 the current version (10.6) conforms with the W3C Recommendations for XSLT 3.0, XPath 3.1, and XQuery 3.1. The Saxon source code is written in Java. During 2005 6 M., David Peterson and others demonstrated that Saxon could be cross compiled to run on NET using the IKVM. NET cross compiler, launching Saxon. NET as a separate product independent of the original developer. With the release of Saxon 8.7, Saxonica adopted this technology and from that release onwards, all versions have been released simultaneously for Java and NET. The NET version of the product omits features that are specific to the Java platform (such as integration with JDOM, Dom4j, and XOM) and instead provides features that integrate with the XML processing capabilities of the NET platform. In 2012, following a series of prototypes, Saxonica released Saxon Client Edition (Saxon CE), a version of the product adapted to run within the browser environment. This is achieved by adapting the Java source code so that it can be cross compiled to JavaScript using the GWT cross compiler produced by Google. Saxon CE provides the first implementation of XSLT 2.0 running on the browser, and also extends the language so that rather than merely generating HTML, it can directly handle user interaction. With the release of Saxon CE 1.1 in February 2013, the product became open source. In February 2016 Michael Kay announced that Saxonica was working on a replacement for Saxon CE written in pure JavaScript, and dubbed Saxon JS. Michael Kay, the author of Saxon, was the editor of the XSLT 2.0 specification and is also editor of the XSLT 3.0 draft.
Особенности
Саксонские версии, доступные для платформ Java, C (включая PHP и Python) и .NET, построены из единой кодовой базы. Последняя версия создана с использованием транспойлера. Все версии технологических платформ обладают одинаковыми возможностями и доступны с тремя различными наборами функций при двух различных условиях лицензирования. Для каждой из этих технологических платформ существует продукт с открытым исходным кодом, 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. В отличие от Saxon HE и прекращенного Saxon CE, SaxonJS не является открытым исходным кодом, но его можно использовать бесплатно в браузере или в Node.js.
The Saxon versions that are available for the Java, C (including PHP and Python), and NET platforms are built from a single codebase. The latter version is built using a transpiler. All technology platform versions share the same capabilities, and they are made available with three different feature sets under two different licensing conditions. For each of these technology platforms, there is an open source product, Saxon HE, that is licensed under MPL 2.0. It provides basic XSLT 3.0, XPath 3.1, and XQuery 3.1 functionality, as defined by the respective specifications. In addition, Saxon HE implements certain features that the XSLT 3.0 specification declares as optional and that were previously reserved for the commercial versions, such as dynamic XPath 3.1 evaluation and higher order functions in XSLT 3.0. The commercial versions are called Saxon PE and Saxon EE. A detailed and up to date feature matrix can be found on the Saxonica web site. The fourth technology platform is JavaScript. Previously the open source XSLT processor Saxon CE was cross compiled from the common Java source using GWT. SaxonJS is a completely new implementation in JavaScript. The XSLT sources can either be compiled using Saxon EE or using a built in XSLT based XSLT compiler, which creates less optimized code. On the other hand, the XSLT based XSLT compiler allows dynamic compilation and execution of XSLT. While SaxonJS supports most of the XSLT 3.0 and XPath 3.1 features available in Saxon HE, SaxonJS does not support XQuery. In contrast to Saxon HE and the discontinued Saxon CE, SaxonJS is not open source, but it can be used for free in the browser or in Node. js.