Технология XSLT
Шрифт:
Без всякого сомнения, xt является легендарным процессором. Он был написан Джеймсом Кларком - человеком, чей вклад в технологию XSLT сложно переоценить. Кларк был редактором первой версии XSLT, а его процессор xt был одним из первых прототипов, реализующих новый язык. На xt практическим способом было проверено, множество идей, касающихся XSLT, ведь мало создать мощный язык — нужно еще и позаботиться о том, чтобы его можно было реализовать на практике в интерпретаторах, процессорах и компиляторах.
Процессор xt, безусловно, сыграл свою роль в развитии технологии XSLT. К сожалению, Джеймс Кларк более не продолжает этот проект. Версия от 5 ноября 1999
В последней (если не сказать, финальной) версии xt язык XSLT реализован в почти полном соответствии с версией PR-xslt-19991008. Буквы PR в этом коде означают "proposed recommendation" (англ. предлагаемая рекомендация). PR - это одна из последних стадий принятия нового стандарта в Консорциуме W3, так что можно сказать, что xt реализует почти стандартную версию XSLT. Процессор xt имеет ряд ограничений и недоработок, но уже поздно надеяться, что они будут когда-либо исправлены.
Использование
Как и любой другой XSLT-процессор, написанный на Java, xt можно без труда использовать в Java-проектах. Помимо этого, xt можно использовать в качестве сервлета и из командной строки.
Сервлет-версия xt реализована в классе
Версия xt для командной строки позволяет выполнять преобразования посредством следующей команды:
В этой команде параметр SAX-драйвер указывает на класс, который xt будет использовать в качестве SAX-парсера для разбора входящего документа.
Для платформы Windows32 процессор xt поставляется также в уже скомпилированной версии. Его запуск в этом случае выглядит как
Расширения
В xt реализован стандартный метод вызова Java-функций расширения (если быть до конца откровенными, Кларк фактически и придумал этот "стандартный" способ). Функции реализуются в Java-классах, которые затем подключаются при помощи URI пространств имен.
Сверх этого, xt также реализует несколько дополнительных функций для операций над множествами (
Библиотека libxslt
Основные характеристики.
□ Платформы: C/Gnome, Perl, Python.
□ Расширения: функции и элементы расширения.
□ Полнота реализации: практически полное соответствие XSLT 1.0.
□ Разработчик: Даниел Вейлард (Daniel Veillard).
□ URL: http://xmlsoft.org/XSLT/.
Наравне с Saxon и xt, библиотека libxslt является еще одним примером того, насколько сильным может быть open-source продукт, даже если он создается, в основном, одним человеком. Библиотека libxslt
изначально создавалась для поддержки XSLT-преобразований в проекте Gnome. Для разбора XML, работы с древовидными структурами и вычисления XPath-выражений libxslt использует другую Gnome-библиотеку: libxml. Библиотека libxslt написана практически на чистом ANSI С (языке С стандарта ANSI) и работает на таких платформах, как Linux, Unix и Windows32.Использование
Прежде всего, как C-библиотеку, libxslt можно подключать к собственным модулям посредством документированного API, а также при помощи разработанных врапперов использовать в Perl и Python-программах. Поскольку по степени совместимости и разработанности libxslt явно превосходит Sablotron, думается, что в скором времени он станет гораздо более популярным.
В libxslt также включена утилита
В языках Perl и Python libxslt используется при помощи модулей
Расширения
Другим преимуществом libxslt по сравнению с Sablotron является возможность использования расширений, причем как в виде функций, так и в виде элементов. Функции и элементы расширения в libxslt оформляются в виде C-функций, затем регистрируются в процессоре перед вызовом и используются в преобразованиях так же, как и в случае с Java — посредством пространств имен.
В дополнение к этому, в libxslt по умолчанию также реализовано множество общепринятых расширений — в частности, многие из функций, предложенных в процессоре Saxon и инициативе EXSLT.
Приложение 2
Краткий справочник элементов и атрибутов XSLT
Обозначения
Ниже перечислены обозначения, используемые в данной книге.
□
Обязательный атрибут.
□
Необязательный атрибут.
□
Атрибут со строковым параметром.
□
Атрибут со строковым параметром, значение которого является шаблоном значения атрибута.
□
Атрибут с вариантами значений.
□
Атрибут с вариантами значений, которые могут быть заданы шаблонами значений атрибутов.
□
Содержимым элемента является шаблон.
□
– ->
Элемент содержит последовательность из нуля или более элементов
□
– ->
Элемент содержит последовательность из одного или более элементов