Итак, дерево объектов D0M построено надлежащим образом. Теперь надо его преобразовать в документ XML, страничку HTML, документ PDF или объект другого типа. Средства для выполнения такого преобразования составляют третью часть набора JAXP - пакеты javax. xml. transform, javax.xml.transform.dom, javax.xml.transform.sax, javax.xml.transform.stream, которые представляют собой реализацию языка описания таблиц стилей для преобразований XSLT (XML Stylesheet Language for Transformations) средствами Java.

Язык XSLT разработан консорциумом W3 как одна из трех частей, составляющих язык записи таблиц стилей XSL (XML Stylesheet Language). Все материалы по XSL можно посмотреть на сайте проекта http://www.w3.org/Style/XSL/ .

Интерфейсы и классы, входящие в пакеты javax. xml. trans form. *, управляют процессором XSLT, в качестве которого выбран процессор Xalan, разработанный в рамках проекта Apache Software Foundation, http://xml.apache.org/xalan-j/ .

Исходный объект преобразования должен иметь Интерфейс

Source определяет всего два метода доступа к идентификатору объекта:

public String getSystemId() ; public void setSystemId(String id);

У интерфейса source есть три реализации. Класс DOMSource подготавливает к преобразованию дерево объектов D0M, а классы SAXsource и streamSource подготавливают SAX-объект и простой поток данных. В конструкторы этих классов заносится ссылка на исходный объект - для конструктора класса DOMSource это узел дерева, для конструктора класса SAXSource - ИМЯ файла, ДЛЯ КОНСТруКТОра Класса StreamSource - ВХОДНОЙ поток. Методы этих классов позволяют задать дополнительные свойства исходных объектов преобразования.

Результат преобразования описывается интерфейсом Result. Он тоже определяет точно такие же методы доступа к идентификатору объекта-результата, как и интерфейс У тоже есть три реализации - классы

DOMResult, SAXResult И StreamResult. В КОНСТруКТОрЫ ЭТИХ классов ЗЭНОСИТ- ся ссылка на выходной объект. В первом случае это узел дерева, во втором - объект типа ContentHandler, в третьем - файл, в который будет занесен результат преобразования, или выходной поток.

Само преобразование выполняется объектом класса Transformer. Вот стандартная схема преобразования дерева объектов в документ записываемый в файл.

TransformerFactory transFactory =

TransformerFactory.newInstance();

Transformer transformer = transFactory. newTrans former () ;

DOMSource source = new DOMSource (document) ;

File newXMLFile = new File ("ntbl.xml") ;

FileOutputStream fos = new FileOutputStream(newXMLFile) ;

StreamResult result = new StreamResult(fos); transformer.transform(source, result);

Вначале методом newlnstance о создается экземпляр transFactory фабрики объектов-преобразователей. Методом

public void setAttrbute(string name, String value);

класса Trans formerFactory можно установить некоторые атрибуты экземпляра. Имена и значения атрибутов зависят от реализации фабрики.

С помощью фабрики преобразователей создается объект-преобразователь класса Transformer. При создании этого объекта в него можно занести объект, содержащий правила преобразования, например, таблицу стилей XSL.

В созданный объект класса Transformer методом public void setParameter (String name, String value) ; можно занести параметры преобразования, а методами public void setOutputProperties(Properties out); public void setOutputProperty(String name, String value);

можно определить свойства преобразованного объекта. Имена свойств name задаются константами, которые собраны в специально определенный класс outputKeys, содержащий только эти константы. Вот их список:

Cdata_section_elements - список имен секций cdata через пробел.

Doctype _public - открытый идентификатор public преобразованного документа.

Doctype_system - системный идентификатор system преобразованного документа.

ENCODING - кодировка символов преобразованного документа, значение атрибута encoding объявления XML.

INDENT - делать ли отступы в тексте преобразованного документа. Значения этого свойства "yes" или "по".

Mediatype - МШЕ-тип содержимого преобразованного документа.

METHOD - метод вывода, одно из значений "xml", "html" или "text".

Omrr_xml_declaration - не включать объявление XML. Значения "yes" или "по".

Standalone - отдельный или вложенный документ, значение атрибута standalone объявления XML. Значения "yes" или "по".

Version - номер версии XML для атрибута version объявления XML.

Например, можно задать кодировку символов преобразованного документа следующим методом:

transformer.setOutputProperty(OutputKeys.ENCODING, "Windows-1251");

Затем в приведенном примере по дереву объектов document типа Node создается объект класса DOMSouroe - упаковка дерева объектов для последующего преобразования. По типу аргумента конструктора видно, что можно преобразовать не все дерево, а какое-либо его поддерево, записав в конструкторе класса DOMSource корневой узел поддерева.

XSLT (eX tensible S tylesheet L anguage T ransformations) - язык преобразований xml-документов.

Введение

Задача генерирования отчетности в системе DIRECTUM является одной из наиболее востребованных.

В этой статье описан возможно не самый широко распространенный способ формирования html-отчетов на основе xslt-преобразований. Но несомненно заслуживающий внимания, как один из наиболее удобных и наглядных (если сравнить например с rtf-отчетом).

Если очень коротко, то xslt-преобразование заключается в трансформации xml-схемы с данными в отчет на основе предварительно подготовленного шаблона.

Для примера отчета описанного в статье будет выводится список контрагентов с их наименованием, ИНН и адресом.

Чтобы сформировать отчет понадобятся две составляющие:

Xml-данные для отчета

Xsl-шаблон отчета

Данные в формате xml

Данные в формате xml можно получить прямым sql-запросом:

Select Analit, -- ИД записи для генерации ссылки NameAn, -- Наименование контрагента EdIzm, -- ИНН Dop2 -- Адрес from dbo.MBAnalit where Vid = %s and Sost = "Д" and XRecStat = "+" for xml path("org"), type -- Получить набор строк в виде xml

Описанный выше запрос вернет данные в таком формате:

101702Мобил-Авто ООО123456789 148965ОАО Тринити631000001 148966ООО Дальний восток011101001

Данные нужно обернуть в тег и сохранить в файл, добавив заголовок:

Вторая строка заголовка xml-файла данных важна, в ней указано, что в файле C:\Temp\template.xsl хранится шаблон отчета в который необходимо передать данные.

В итоге получится такой xml-файл:

101702Мобил-Авто ООО123456789426000, г. Ижевск, ул. Революционная, 44 148965ОАО Тринити631000001443000, Самарская обл., г. Самара, ул. Ленина, 11 148966ООО Дальний восток011101001100006, г. Владивосток, ул. Первая, 1

Если открыть полученный xml-файл, браузер будет использовать указанный в заголовке шаблон и подставит данные в него.

xsl-шаблон

Список контрагентов

Теперь нужно сотворить немного магии и указать какие именно данные из xml и в каком виде вставить в шаблон отчета.

Для работы с данными в xsl-шаблоне используются специальные теги.


Цикл for-each и правила выбора

Чтобы перебрать все узлы из xml-файла данных нужно использовать конструкцию:

Она позволит перебрать все дерево данных. Для того, чтобы выбрать только определенные данные из дерева используется правило выбора select="orgs/org" . Правила описаны на языке запросов XPath . В текущем примере будет последовательно отобрана каждый узел из .


Сортировка

Если необходимо, чтобы записи отображались не в порядке следования в xml-файле, а сортировались, то нужно указать это в шаблоне:

Теперь записи будут перебираться предварительно отсортированными по наименованию.


Отображение значения

Но просто перебрать не достаточно, нужно вывести в отчет нужные данные, для этого существует конструкция:

Конструкция отобразит значение тэга (наименование контрагента).


Гиперссылки

Чтобы сделать из наименования контрагента ссылку, по которой можно будет открыть запись справочника, нужно немного модифицировать код:


Сase-оператор и фильтрация

Пусть ИНН контрагента отображается в отчете не просто так. Если ИНН в карточке отсутствует, то будет выводится сообщение об отсутствии ИНН. Для этого необходимо использовать конструкцию:

ИНН:. ИНН не указан.

В конструкции choose с помощью фильтра test проводится проверка содержимого тэга (ИНН) на пустое значение ( ). Если содержимое не пусто, то выводиться значение. В других случаях выводится сообщение "ИНН не указан".


Еще один фильтр

С помощью фильтра возможно реализовать еще одну "рюшечку", которая будет помечать контрагентов с ИНН начинающихся например с кода региона "18". Выглядеть это будет так:

Конструкция для всех записей ИНН которых начинается с "18" дополнительно выведет значок .

В конечном итоге получится такой код шаблона:

Список контрагентов

ИНН:. ИНН не указан. Адрес: .


Результат

А если открыть xml-файл в браузере, то получится такой отчет:

Вывод

В статье описаны только несколько базовых возможностей xsl, такие как фильтры, сортировка, цикл, case-конструкция. Кроме них существуют еще интересные возможности. Надеюсь, статья подтолкнет изучить и их. Возможно после этого построение отчетов станет более интересным.

А если к отчету подключить такой мощный инструмент как javascript, то описанный отчет легко можно сделать интерактивным. Например добавить элемент, позволяющий проводить какую-либо фильтрацию. Или отображать графики по данным отчета.

Какие есть плюсы при реализации отчетов описанным способом:

Требуется разработка относительно небольшого количества прикладных вычислений;

Разработка шаблона наглядна и также относительно нетрудоёмка.

Всё описанное в статье легко интегрируется в аналитический отчет, ссылка на который приведена ниже.

Не прошло и трёх лет с тех пор, как у меня зародилась мысль о том, что пора изучать XSLT -))). Мысль зародилась, а везде ещё стоял PHP 4 и зверствовал Salbotron , который, мягко говоря, не отличался высокой производительностью. Да и редко какой браузер мог похвастаться поддержкой этого самого XSLT. По этим соображениям изучение столь перспективного направления я отложил до лучших времён. На данный момент можно смело заявить, что эти времена настали, поскольку вышел PHP 5 с поддержкой XSLT и сносной объектной моделью, а все топовые браузеры уже сами уверенно держат преобразования, только подавай XML. :)

  • http://w3c.org - комитет по разработке и продвижению стандартов всемирной паутины Internet. На данный момент он является первоисточником практически всех веб-ориентированных стандартов и рекомендаций.
  • http://www.w3.org/TR/xml - спецификация расширяемого языка разметки XML , который является основой современного веба. На момент написания статьи доступна пятая редакция версии 1.0, а также вторая редакция версии 1.1.
  • http://www.w3.org/TR/xml-names - спецификация использования пространств имён в XML.
  • http://www.w3.org/TR/xpath - спецификация по использованию языка поиска частей XML-документа XPath .
  • http://www.w3.org/TR/xsl/ - спецификация расширенного языка стилей XSL .
  • http://www.w3.org/TR/xslt - спецификация языка преобразований XSLT .
  • http://validator.w3.org/ - валидатор HTML .
  • http://www.w3.org/TR/xhtml1/ - спецификация XHTML1.0 .

Переводы на русский язык:

  • http://www.rol.ru/news/it/helpdesk/xml01.htm - Расширяемый язык разметки XML1.0 (вторая редакция). /Радик Усманов/
  • http://www.rol.ru/news/it/helpdesk/xnamsps.htm - Пространства имен в XML. /Радик Усманов/
  • http://www.rol.ru/news/it/helpdesk/xpath01.htm - Язык XML Path (XPath ). /Радик Усманов/
  • http://www.rol.ru/news/it/helpdesk/xslt01.htm - Язык преобразований XSL (XSLT ). /Радик Усманов/

Для лучшего понимания всего происходящего я рекомендую читать спецификации в следующем порядке:

  1. XML (это основа!)
  2. пространства имён (механизм разнородного XML-кода в одном файле)
  3. XPath (язык выборки элементов из дерева структуры)
  4. XSLT (преобразования)
  5. XHTML (то, к чему нужно стремиться)

Особо пытливые могут также уделить внимание расширенному языку стилей XSL .

2. Валидный XHTML

Что такое валидный XHTML? В первую очередь, это XML-документ, который должен соответствовать спецификации XML. Во-вторую, почти обычная HTML-страница, к которой все привыкли.

Почему нужен именно XHTML? Исключительно из соображений совместимости и кросс-браузерности. Страница в XHTML будет с большей вероятностью отображаться корректно в популярных браузерах, чем обычный HTML.

Для рядового клепателя страниц словосочетание XML-документ должно означать следующее:

  1. Документ содержит объявление XML-документа в самом начале страницы:
  2. Документ содержит один корневой элемент, в котором находятся все остальные.
  3. Все элементы (тэги) должны иметь закрывающую часть (
    , ).
  4. Атрибуты всегда имеют значение, которое обязательно указывается в кавычках (одинарных или двойных). Например, "radio" disabled="disabled" /> .
  5. Управляющие символы & , < и > всегда должны маскироваться. Например, "?a=1&b=2" > & . Исключение составляет только , внутри которого спецсимволы можно не маскировать.

Также сам XHTML обязывает выполнять следующие условия:

  1. Документ должен объявлять пространство имён, в рамках которого будут использоваться элементы HTML.
  2. Документ должен объявлять DOCTYPE перед корневым элементом и указывать в нём один из типов XHTML и соответствующий DTD.

Пример простого документа XHTML1.0:

И так обо всём по порядку.

    Объявление XML-документа, в котором указывается его версия и кодировка.

    Объявление пространства имён и используемого языка.

Три версии XHTML1.0 предназначены для лучшей обратной совместимости:

  • Strict - обеспечивает наибольшее соответствие рекомендациям W3C со стороны браузеров. Однако и сам HTML-код должен следовать этим рекомендациям.
  • Transitional - менее строгое соответствие, которое заставляет браузер вести себя так, как если бы это был обычный HTML-документ.
  • Frameset - позволяет использовать фреймы.

XHTML1.1 по сути является тем же XHTML1.0 Strict и призван вытеснить другие версии XHTML1.0. Однако, по сравнению с XHTML1.0 Strict, у него есть ряд отличий :

  1. Удалён атрибут lang , его роль выполняет xml:lang . (Модуль [ XHTMLMOD ])
  2. Для элементов a и map вместо атрибута name нужно использовать атрибут id . (Модуль [ XHTMLMOD ])
  3. Доступен набор элементов ruby . (Модуль [ RUBY ])

Итак, если вам нужна наибольшая кросс-браузерность и совместимость с рекомендациями W3C, то XHTML1.1 самое оно!

Из этих соображений результатом моих преобразований будет именно XHTML1.1.

3. XSLT-преобразования

Что такое XSLT? Это язык преобразований XML-документа, который был разработан как часть расширенного языка стилей (XSL).

Зачем нужен XSLT? Он позволяет реализовать схему, при которой данные хранятся отдельно, а их представление отдельно. То есть, один XML-документ преобразуется с помощью другого XML-документа (XSL, в котором находятся XSLT-шаблоны) в конечный документ. Результатом может быть XML, HTML или текстовый документ любого формата.

Для того, чтобы воспользоваться XSLT-преобразованиями, в первую очередь нужно сформировать правильный стиль XSL и подключить его к XML-файлу.

Валидным XSL-документом является XML-документ, у которого задано пространство имён xsl и присутствует корневой элемент stylesheet. В самом простом случае стиль может выглядеть, например, так:

Этот стиль не содержит каких-либо явных определений шаблонов или других элементов XSL. Однако, его уже можно использовать. Чтобы посмотреть результат, достаточно сформировать произвольный XML-документ и подключить к нему этот стиль:

За подключение стиля отвечает строка:

При этом кодировка результата будет UTF-8, несмотря на то, что исходный документ был сформирован в windows-1251. К сожалению, браузеры обычно не позволяют просмотреть код результирующего документа, но модуль XSLT в PHP5 даёт возможность передать результирующий код в переменную, которую можно сохранить в файл. Поэтому, используя PHP, я приведу исходный код результирующего документа:

Этот код не является валидным XML-документом и тем более XHTML1.1. Для того, чтобы сформировать нужный код, я усложню исходный XSL-стиль и добавлю туда необходимые шаблоны и преобразования. При этом исходный XML-документ останется без изменений.

В качестве примера я приведу XSL-стиль, который при помощи XSLT будет выводить список атрибутов исходного XML-документа с их значениями, при этом будет формироваться валидный XHTML1.1. Итак, стиль:

Файл - test.xsl
"/" > "http://www.w3.org/1999/xhtml" xml:lang="ru" > Мой первый XSLT
Мой список:
  1. background-color: #eee;
Разработчик парсера: "system-property("xsl:vendor-url")" />

Чтобы понять, как он работает, я распишу каждое действие отдельно:

    Объявление XML-документа:

    Обязательным атрибутом является определение пространства имён xsl через атрибут xmlns:xsl="http://www.w3.org/1999/XSL/Transform" .

    Следующим шагом в корневом элементе stylesheet объявляется, каким образом нужно формировать результирующий документ:

    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" />

    Основные атрибуты:

    • method="xml" - метод вывода документа. Результирующий документ будет в формате XML.
    • encoding="windows-1251" - кодировка результирующего документа.
    • omit-xml-declaration="no" - пропускать или нет начальное объявление XML-документа (). Может иметь значение "yes" или "no" (актуально только для html).
    • indent="yes" - формировать отступы согласно уровню вложенности. Может иметь значение "yes" или "no".
    • media-type="text/xml" - MIME-тип результирующего документа (используется только для метода вывода html).
    • doctype-public="-//W3C//DTD XHTML 1.1//EN" - тип результируюшего документа (DOCTYPE)
    • doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" - ссылка на DTD

    Если метод вывода объявлен html, то значения атрибутов encoding и media-type будут подставлены в заголовок страницы ( ... ) посредством метатега.

    Объявление основного шаблона:

    Атрибут xmlns="http://www.w3.org/1999/xhtml" указывает на пространство имён xhtml, которое будет применено по умолчанию к этому элементу и всем дочерним элементам, у которых оно не задано явно.

    Атрибут xml:lang="ru" указывает на язык, в котором сформирована страница (будущая).

Эта часть стиля была нужна для формирования атрибутики валидного XHTML1.1 кода.

Теперь что касается XSLT-преобразований:

    Вставка простого текста:

    Атрибут select принимает выражение XPath, на основе которого делает выборку. Если выборка вернула список узлов, то начинает работать цикл по каждому элементу.

    В данном случае выборка вернёт список атрибутов для этого (корневого) и всех дочерних элементов.

    Проверка условия:

    В данном случае, если позиция элемента чётная (определяется вышестоящим if), то в стиль элемента

  1. будет прописан серый цвет фона.

    Вывод значений элемента:

    Этот код подставит в вышестоящий элемент строку, собранную из имени текущего элемента и его значения. Содержимое атрибута select соответствует XPath.

    Разработчик парсера: "system-property("xsl:vendor-url")" /> "system-property("xsl:vendor-url")" /> "system-property("xsl:vendor")" />

Результатом обработки этого стиля (test.xsl) станет такой код:

Результат - исходный код
"1.0" encoding="windows-1251" ?> "http://www.w3.org/1999/xhtml" xml:lang="ru" > Мой первый XSLT
Мой список:
  1. attr1 = Главный атрибут
  2. style=" background-color : #eee ; " > attr1 = мой атрибут1
  3. attr2 = мой атрибут2
  4. style=" background-color : #eee ; " > attr5 = Халявный атрибут
Разработчик парсера: libxslt

Этот код соответствует стандарту XHTML1.1 и был сформирован на основе исходного XML-документа. Для проверки можно воспользоваться валидатором от W3C, который расположен по адресу http://validator.w3.org/ .

В браузере этот код выглядит примерно так:

// Вывод кода HTML в виде текста header("Content-Type: text/plain;" ); // Объект исходного XML-документа $xml = new DOMDocument(null , "windows-1251" ); $xml ->load("test.xml" ); // Объект стиля $xsl = new DOMDocument(null , "windows-1251" ); $xsl ->load("test.xsl" ); // Создание парсера $proc = new XSLTProcessor(); // Подключение стиля к парсеру $proc ->importStylesheet($xsl ); // Обработка парсером исходного XML-документа $parsed = $proc ->transformToXml($xml ); // Вывод результирующего кода echo $parsed ; // Запись файла с результирующим кодом file_put_contents("parsed.html" , $parsed ); ?>
IE 6 FireFox 3 Opera 9.02

Дополнительную информацию по использованию XSLT в PHP5 можно найти по адресу http://ru2.php.net/manual/ru/book.xslt.php .

Мысли вслух

«Товарищи, мы стоим на краю огромной пропасти! И я предлагаю сделать большой, решительный шаг вперёд!»

2019 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

XSLT-преобразования

XSLT обладает большими возможностями для оперирования данными в документах XML. Например, при помощи таблицы стилей (stylesheet) XSLT я мог бы отформатировать данные из planets.xml в таблицу HTML. Таблицы стилей содержат правила, установленные для преобразования XML-документа, и большая часть книги посвящена созданию таблиц стилей и объяснению того, как они работают. Вот как выглядит таблица стилей XSLT planets.xsl (листинг 1.2), преобразующая данные из planets.xml в таблицу HTML (мы проанализируем ее в главе 2).

Листинг 1.2. planets.xsl

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

The Planets Table

The Planets Table

Как видите, эта таблица стилей XSLT выглядит как XML-документ - и для этого есть основания, потому что она им и является. Все таблицы стилей XSLT являются также и документами XML, а раз так, то они должны быть хорошо форматированными документами XML С этими двумя документами - planets.xml (листингом 1.1) и связанной с ним таблицей стилей, planets.xsl (листинг 1.2) - мы будем работать на протяжении всей книги, рассматривая различные возможные преобразования XSLT.

Как вы свяжете эту таблицу стилей с XML-документом planets.xml ? Как мы увидим в следующей главе, одним из способов это сделать является инструкция обработки XML , использующая два атрибута. Первый атрибут - type , который следует установить в «text/xml», чтобы указать, что используется таблица стилей XSLT. (Чтобы использовать таблицы стилей другого типа - каскадирующие таблицы стилей (CSS, cascading stylesheets), обычно использующиеся с HTML - следует задать «text/css».) Второй атрибут - href , которому следует присвоить значение URI (вспомните, что XML использует не адреса URL, а идентификаторы URI, Uniform Resource Identifier) таблицы стилей:

Mercury

.0553

58.65

1516

.983

43.4

Теперь при помощи процессора (processor) XSLT можно применить таблицу planets.xsl к planets.xml и создать новый документ, planets.html . Процессор XSLT создает новый файл planets.html , который вы можете увидеть на рис. 1.2.

Рис. 1.2. HTML-документ, созданный процессором XSLT

Как можно видеть на рис. 1.2, процессор XSLT считывает данные из planets.xml , применяет к ним правила из planets.xsl и создает HTML-таблицу в planets.html. Это наш первый пример XSLT-преобразования.

Что здесь на самом деле происходит? У нас были XML-документ, planets.xml , и таблица стилей XSLT, planets.xsl . Но каким образом они объединились для создания planets.html ?

Из книги XSLT автора Хольцнер Стивен

XSL = XSLT + XSL-FO Сам XSLT в действительности является частью более крупной спецификации - расширенного языка таблиц стилей, Extensible Stylesheet Language, или XSL. XSL предназначен для задания точного, до миллиметра, формата документов. Форматирующая часть XSL, представляющая гораздо более

Из книги Технология XSLT автора Валиков Алексей Николаевич

Преобразования XSLT-XSL XSLT позволяет работать непосредственно с содержимым документов XML. Например, у вас может быть огромный документ XML, содержащий всю бейсбольную статистику за последний сезон, однако вас может интересовать только статистика для питчеров. Чтобы извлечь

Из книги автора

Версии XSLT Спецификации XSLT разрабатывались значительно активнее, чем спецификации для всего XSL. Рекомендация XSLT 1.0 была окончательно принята 16 ноября 1999 г., и эта версия является сегодня основной версией XSLT.Затем появился рабочий проект XSLT 1.1 и, хотя первоначально он

Из книги автора

Что нужно для XSLT-преобразования Для осуществления XSLT-преобразования, такого как преобразование planets.xml в planets.html, необходим XSLT-процессор. Для преобразований документов XML можно использовать XSLT тремя способами: используя отдельные программы, называемые процессорами XSLT.

Из книги автора

XSLT-преобразования на web-серверах Можно осуществлять XSLT-преобразования на web-сервере - так чтобы XML-документ был преобразован до того, как web-сервер отправит его браузеру. Здесь самое распространенное преобразование - это преобразование документа XML в HTML, но

Из книги автора

Ресурсы XSLT В Интернете можно найти огромное количество нужных нам сведений. Имейте в виду, что все приведенные далее адреса URL легко могут измениться; списки будут актуальны столь долго, сколько этого будут хотеть люди, занимающиеся поддержкой перечисленных

Из книги автора

Утилиты XSLT В Интернете существует также много утилит XSLT - в следующем списке перечислены наиболее известные: Microsoft XSL API Extension, http://msdn.microsoft.com/downloads/webtechnology/xml/xslisapi.asp. Упрощает задачу выполнения XSLT-преобразований на стороне сервера; Microsoft XSL-to-XSLT Converter,

Из книги автора

Инструкции XSLT В теле шаблона может присутствовать ряд элементов XSLT, называемых инструкциями: ; ; ; ; ; ; ; ; ; ; ; ;

Из книги автора

Расширяемость XSLT Несмотря на кажущуюся сложность XSLT, он во многих отношениях ограничен по сравнению с языками программирования, и в процессорах XSLT сразу же начали появляться расширения XSLT. Например, Saxon представил элемент , реализуя в XSLT стандартный для

Из книги автора

Из книги автора

Отличия XSLT 1.1 от XSLT 1.0 Отсутствие result tree fragment Главное и наиболее существенное отличие XSLT 1.1 от XSLT 1.0 состоит в том, что тип данных, известный в XSLT 1.0 как result tree fragment (результирующий фрагмент дерева) в XSLT 1.1. отсутствует. Вместо него в версии 1.1 используется множество узлов,

Из книги автора

Отличия XSLT 2.0 от XSLT 1.1 Прежде чем приступить к описанию отличий второй версии XSLT от версии 1.1 (и, соответственно, 1.0), следует сделать одно существенное замечание. Лицензионные соглашения Консорциума W3 не позволяют раскрывать широкой общественности внутренние материалы



Мы можем оповещать вас о новых статьях,
чтобы вы всегда были в курсе самого интересного.

 
NameMassRadiusDay