преобразования в собственных проектах. Xalan Java поддерживает набор интерфейсов TrAX (от англ. transformation API for XML — программный интерфейс преобразований для XML), определяющий стандартные модели и методы преобразования XML-документов в Java-программах.
Помимо этого, и Xalan Java и Xalan С++ предусматривают возможность выполнения преобразований из командной строки. Для Xalan Java стандартный вызов будет выглядеть так:
java org.apache.xalan.xslt.Process -in source.xml -xsl stylesheet.xsl -OUT result.xml
Если при попытке выполнения этой команды выдается сообщение вида:
Exception in thread 'main' java.lang.NoClassDefFoundError:
org/apache/xalan/xslt/Process
это означает, что библиотека xalan.jar
не прописана в переменной окружения CLASSPATH
, запустить Xalan в этом случае можно, указав xalan.jar
в параметрах явным образом:
java -cp xalan.jar org.apache.xalan.xslt.Process -in source.xml -xsl stylesheet.xsl -out result.xml
Библиотека Xalan С++ имеет несколько вариантов для платформ Windows 32, Linux, AIX, HP-UX и Solaris, каждый из которых включает также скомпилированную утилиту TestXSLT, позволяющую выполнять преобразования из командной строки:
TestXSLT -in source.xml -xsl stylesheet.xsl -out result.xml
Расширения
Xalan С++ позволяет вызывать в XSLT-преобразовании пользовательские функции расширения, написанные на языке С. Кроме того, в дополнение к базовым функциям XSLT, Xalan С++ реализует несколько наиболее часто используемых функций, например, функцию nodeset
. В текущей версии (1.2) Xalan С++ не поддерживает элементы расширения.
Возможности расширения Xalan Java намного богаче. Xalan Java, как и Xalan С++, реализует дополнительную библиотеку функций (которая по сравнению с Xalan С++ также намного шире). Помимо этого, Xalan Java позволяет создавать функции и элементы расширения на Java и других языках программирования.
Остановимся на последнем пункте более подробно. Xalan позволяет использовать библиотеку BSF (от англ. bean scripting framework — система скриптовых языков для bean-компонент). BSF — это библиотека, которая позволяет использовать скриптовые языки в Java-приложениях и апплетах. На данный момент BSF позволяет реализовывать в Xalan Java расширения на следующих скриптовых языках:
□ Mozilla Rhino (фактически, еще один вариант JavaScript);
□ NetRexx;
□ BML;
□ JPython;
□ Jacl;
□ PerlScript;
□ VBScript;
□ JavaScript.
Процессор Saxon
Основные характеристики.
□ Платформы: Java.
□ Расширения: функции и элементы расширения на Java.
□ Полнота реализации: практически идеальная.
□ Разработчик: Майкл Кей.
□ URL: http://saxon.sourceforge.net.
XSLT-процессор Saxon был разработан и до сих пор поддерживается единственным человеком — Майклом Кеем (Michael Kay), который в настоящий момент является редактором спецификации XSLT 2.0. Процессор Saxon, так же как и Xalan, является бесплатным open-source продуктом.
На Web-сайте Saxon доступны два варианта процессора — полный Saxon и облегченная версия, скомпилированная для Windows — Instant Saxon, которая занимает всего 400 килобайт в архиве, но практически не уступает полной версии по функциональности.
Следует особым образом подчеркнуть полноту реализации Saxon. Майкл Кей является известным специалистом по XSLT, который много времени уделяет консультированию разработчиков в списке-рассылке XSL List. Столь плотная работа с конечными пользователями позволяет ему быстро реагировать на информацию о допущенных ошибках и несоответствиях. Как результат, разработанный и поддерживаемый им процессор считается образцом соответствия стандарту XSLT. В целом, Saxon можно описать как выдающийся продукт от выдающегося человека.
Использование
Легкий вариант, Instant Saxon представляет собой утилиту командной строки saxon.exe
, с помощью которой можно применять преобразования к XML-документам:
saxon.exe -о result.xml source.xml stylesheet.xsl
Полная версия Saxon (включающая также исходный код) тоже может использоваться как утилита командной строки:
java com.icl.saxon.stylesheet -о result.xml source.xml stylesheet.xsl
Как и в случае с Xalan, библиотеку saxon.jar
придется либо включить в переменную окружения CLASSPATH
, либо указывать явным образом
java -cp saxon.jar com.icl.saxon.StyleSheet -o result.xml source.xml stylesheet.xsl
Между тем, Saxon — это далеко не только процессор командной строки. Saxon предоставляет очень мощные возможности для использования в собственных проектах. В частности, Saxon поддерживает TrAX (Transformation API for XML), о котором мы говорили чуть выше, позволяет применять пользовательские парсеры и сериализаторы, предоставляет API для Java и многое другое.
Расширения
Расширения для Saxon могут быть созданы на языке Java в виде функций и элементов. Saxon отличает возможность использования Java-функций расширения, написанных для других Java-процессоров (в частности Xalan и Oracle XSLT Processor).
Для программирования элементов расширения Saxon предоставляет интерфейс com.icl.saxon.style.ExtensionElementFactory
, который несколько отличается от подхода, предложенного в Xalan. В Xalan элементу расширения соответствует функция класса, в то время как в Saxon элементу расширения соответствует 'фабрика классов', ExtensionElementFactory
, возвращающая по данному имени элемента класс-наследник com.icl.saxon.style.StyleElement
,