Выбрать главу

 </xsclass="underline" template>

</xsclass="underline" stylesheet>

К сожалению, текущая версия MSXML не поддерживает расширение пользовательскими элементами.

Процессор Xalan

Основные характеристики.

□ Платформы: Java, С++.

□ Расширения: функции и элементы расширения.

□ Полнота реализации: один из наиболее проработанных процессоров. □ Разработчик: Apache XML Project.

□ URL: http://xml.apache.org.

Xalan — это очень известный XSLT-процессор, созданный в рамках Apache XML Project для языковых платформ Java и С++. Xalan, как и остальные продукты Apache XML Project, поставляется с открытым исходным кодом и открытым API, что делает его очень привлекательным для интеграции в другие приложения.

Использование

По сути дела, Xalan Java и Xalan C++ — это библиотеки, позволяющие использовать XSLT-преобразования в собственных проектах. 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, соответствующий экземпляру элемента.

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

Библиотека Oracle XDK

Основные характеристики.

□ Платформы: Java, C/C++, PL/SQL.

□ Расширения: поддержка функций расширения.

□ Полнота реализации: сравнительно хорошая (уступает Saxon и MSXML).

□ Разработчик: Oracle Corporation.

□ URL: http://technet.oracle.com/tech/xml/.