соответствующий экземпляру элемента.
Помимо описанных выше возможностей, базовая библиотека функций XPath расширена в Saxon большим количеством функций, облегчающих работу со строками, множествами, датами и так далее. Saxon также включает некоторые из расширений, предложенные инициативой EXSLT.
Библиотека Oracle XDK
Основные характеристики.
□ Платформы: Java, C/C++, PL/SQL.
□ Расширения: поддержка функций расширения.
□ Полнота реализации: сравнительно хорошая (уступает Saxon и MSXML).
□ Разработчик: Oracle Corporation.
□ URL: http://technet.oracle.com/tech/xml/.
Так же как и MSXML, Oracle XDK (от англ. XML Development Kit - комплект для XML-разработки) состоит из нескольких компонентов, предназначенных для разработки XML-приложений на Java, С, С++ и PL/SQL. Библиотека Oracle XDK включает XML-парсер, реализующий DOM и SAX интерфейсы, XSLT- процессор, генератор классов и процессор для XML Schema. Java-версия XDK также включает XSQL-сервлет и утилиту XML SQL (в сокращении — XSU), которые являются основой решений Oracle для обеспечения XML-функциональности в базах данных. XSU предоставляет возможности для экспорта и импорта реляционных данных в виде XML, а сервлет XSQL позволяет использовать возможности XSU в клиент- серверных приложениях (в частности — на Web-серверах). Примечательно, что XSU и XSQL работают не только с базой данных Oracle, но и с любыми другими базами данных, которые поддерживают JDBC-доступ. Oracle XDK разработан под руководством Стива Мюнха (Steve Muench), который также является очень известным специалистом по XML.
Главным образом в Oracle XDK нас интересует библиотека, отвечающая за выполнение XSLT- преобразований — Oracle XSLT Processor. Этот компонент включен во все языковые версии XDK: существует вариант для Java, С, С++ и даже для PL/SQL (что позволяет выполнять преобразования внутри базы данных Oracle).
Относительно проработанности Oracle XSLT Processor можно сказать следующее: XSLT 1.0 поддерживается полностью (или почти полностью), однако периодически попадаются мелкие ошибки, которые оперативно исправляются в следующих релизах. XSLT-процессор играет важную роль в Web- решениях Oracle и потому его поддержке и отладке уделяется большое внимание.
Использование
Главной областью применения Oracle XSLT Processor является его использование совместно с технологиями XSQL и XSU для обеспечения Web-доступа к реляционным данным. Кроме этого, Oracle XSLT Processor легко интегрируется в другие приложения и также может выполняться из командной строки. Например, в Java-версии Oracle XDK для выполнения преобразования следует запустить команду:
java oracle.xml.parser.v2.oraxsl source.xml stylesheet.xsl result.xml
Если выдается сообщение о ненайденном классе, можно попробовать следующий вариант:
java -cp xmlparserv2.jar oracle.xml.parser.v2.oraxsl source.xml stylesheet.xsl result.xml
Можно также воспользоваться утилитой пакетной обработки oraxsl
:
oraxsl source.xml stylesheet.xsl result.xml
Расширения
Java-версия Oracle XSLT Processor может расширяться пользовательскими функциями, написание которых, в принципе, ничем не отличаются от стандартных методов создания Java-функций расширения.
К сожалению, Oracle XSLT Processor не поддерживает пользовательские элементы расширения. Стандартных дополнений базовой библиотеки функций XPath и XSLT также не предусмотрено.
Процессор Sablotron
Основные данные процессора.
□ Платформы: С++, Perl, PHP, Python.
□ Расширения: нет.
□ Полнота реализации: XSLT 1.0 и XPath 1.0 реализованы не полностью.
□ Разработчик: Ginger Alliance.
□ URL: http://www.gingerall.com.
XSLT-процессор Sablotron, разработанный в Ginger Alliance, — это еще один пример весьма успешного open source проекта в области XML-технологий. Sablotron — это библиотека для преобразования XML-документов, которая построена (вернее, почти построена) в соответствии со спецификациями XSLT, XPath и DOM. Процессор Sablotron изначально написан на С++ и компилируется под несколько платформ, в числе которых Linux, Windows 32, Solaris, HP-UX, FreeBSD, OpenBSD, OpenServer и UnixWare. Открытый код также позволяет переносить Sablotron под другие платформы, так что этот список, вполне возможно, будет расширен.
К сожалению, реализация XSLT и XPath в Sablotron вызывает определенные нарекания. В текущей версии (0.71) Sablotron далеко не полностью поддерживает эти стандарты: например, в путях выборки не работают оси навигации following
и preceding
, некоторые функции (как то: id
, lang
, unparsed-entity-uri
) не реализованы вообще, многие из функций и элементов реализованы не до конца или работают не в полном соответствии со спецификациями. В общем, соответствие Sablotron стандартам оставляет желать лучшего, хотя и в таком виде он является вполне функциональным процессором.
Использование
Особую популярность процессору Sablotron'у придает наличие для него расширений под языки Perl, PHP и Python. Долгое время Sablotron был единственным XSLT-процессором, который существовал для Perl, и поэтому Perl-программистам для выполнения XSLT-преобразований не оставалось ничего, кроме как использовать Sablotron.
Помимо интерфейсов для С++, Perl, Python и PHP, для Sablotron также существует утилита для выполнения преобразований из командной строки sabcmd
: