Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-08.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
422.91 Кб
Скачать

5.3.20.4. Средства расширения в процессореSaxon

В процессоре Saxonопределено большое количество функций и элементов расширения. Кроме того, в некоторые элементыXSLTдобавлены новые атрибуты.

В процессоре Saxonдобавлены следующие функции расширения:

  • функции, выполняющие операции с наборами узлов: after(), before(), closure(), difference(), distinct(), highest(), intersection(), leading(), line-number(), lowest(), node-set(), range();

  • математические функции: eval(), evaluate(), expression(), max(), min(), sum();

  • булевские функции: exists(), for-all(), has-same-nodes(), if(), if-null();

  • строковые функции: path()иtokenize();

  • функции для работы с пользовательскими данными: get-user-data()иset-user-data();

  • функция get-pseudo-attribute()для инструкций по обработке;

  • функция systemId()для сущностей.

Кроме того, процессор Saxonподдерживает функции модулейCommon,Math,Sets,DatesAndTimesиFunctionsбиблиотекиEXSLT.

Элементы расширения процессора Saxonобеспечивают следующие возможности:

  • изменение значения присвоенной переменной (элемент saxon:assignи дополнительный атрибутsaxon:assignable в элементе xsl:variable);

  • генерацию DTD в выходном документе (элементы dtd:doctype, dtd:element, dtd:attlist, dtd:attribute, dtd:entity и dtd:notation);

  • вставку ссылки на сущность в выходном документе (элемент entity-ref);

  • задания функций XSLT для преобразований (элементы saxon:function и saxon:return);

  • операции итерации над узлами (элементы saxon:group , saxon:item и saxon:while);

  • выполнение шаблонных правил, написанных на языке Java (элемент saxon:handler);

  • формирование нескольких выходных документов (элементы saxon:outputиxsl:document);

  • просмотр больших документов по частям (поддеревьям) (элемент saxon:preview);

  • выполнение пользовательских функций расширения на языке Java(элементsaxon:scriptиxsl:script).

В некоторые элементы XSLTвключены следующие дополнительные атрибуты:

  • атрибут saxon:trace для разрешения или запрещения трассировки выполнения шаблонных правил (для элементовxsl:stylesheetиxsl:template);

  • атрибут saxon:allow-avt для разрешения или запрещения использования в атрибутеnameзначения шаблона имени атрибута (для элементаxsl:call-template);

  • атрибут saxon:disable-output-escaping для разрешения или запрещения вывода специальных символов в значении атрибута (для элементаxsl:attribute).

Для элементов xsl:outputиxsl:documentв значениях атрибутаmethodможно использовать следующие дополнительные значения:

  • значение "fop"в процессорXSLApacheFOP;

  • значение "xhtml" для вывода документа в форматеXHTML;

  • полное имя класса, реализующего интерфейс SAX2 org.xml.sax.ContentHandler, или подкласса классаcom.icl.saxon.output.Emitter для направления вывода в этот класс.

Кроме того, если значение атрибутаmethodравно"fop", то можно задать два дополнительных атрибута:fop:renderer, определяющего имя класса FOPRendererиfop:configuration, определяющего имя файла конфигурации пользователя в FOP.

Для элементов xsl:outputиxsl:documentтакже определены следующие дополнительные атрибуты:

  • атрибут saxon:indent-spacesопределяет количество отступов (пробелов) для каждого уровня в выходных документахXMLиHTML;

  • атрибут saxon:character-representationдля управления выводом в выходном документе символов, не являющихся символамиASCII;

  • атрибут saxon:omit-meta-tagзапрещает или разрешает вывод дескриптора<meta>в выходном документеHTML;

  • атрибут saxon:next-in-chainнаправляет вывод в другой документ.

В процессоре Saxonможно также использовать методы классов библиотекиJava.

Статические методы (методы класса) можно вызывать прямо по их имени, определив для них пространство имен в виде "java:полное-имя-класса" в том же элементе, где используется этот метод или в элементе верхнего уровня, например:

<xsl:value-of select="math:sqrt($arg)"

xmlns:math="java:java.lang.Math"/>.

Если используются методы объекта, предварительно генерируется объект этого класса с помощью метода new(список-аргументов), а затем к нему применяется необходимый метод. Так, следующие фрагменты кода:

<xsl:stylesheet

version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:date="java:java.util.Date">

<p><xsl:value-of

select="date:toString(date:new())"/></p>

сначала создает объект класса Dateдля текущих даты и времени, используя конструктор без параметров, а затем преобразует созданный объект в строку.

И, наконец, в процессоре Saxonможно создавать собственные элементы расширения.

Файл: Создан:16.03.2008Модифицирован:10.01.2012Автор:Шонин В.А.

Соседние файлы в папке Лекции