Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

SAX 2.0 (Simple API for XML)

Поиск

Когда мы не собираемся работать со структурой xml документа, добавлять и удалять элементы и т.п., построение дерева DOM объектов парсером излишне. На это тратиться время и память. Для подобных случаев предусмотрен упрощенный API для разбора xml документа основанный на событиях разбора. Например, пусть парсер встретил начало xml элемента, т.е. открывающий тег. Тогда парсер генерит соответствующее событие. Далее приложение по своему усмотрению может обработать его на основе полученной информации, например, имени элемента.

Метод Описание
documentLocator Метод, возвращающий имя файла, путь или URL обрабатываемого документа XML
startDocument Метод, вызываемый при достижении обработчиком начала Объекта XMLdocument
endDocument Метод, вызываемый при достижении обработчиком конца Объекта XMLdocument
startElement Метод, вызываемый при достижении обработчиком открывающего дескриптора элемента
endElement Метод, вызываемый при достижении обработчиком закрывающего дескриптора элемента
characters Метод, вызываемый при достижении обработчиком текстовых данных или знаков пробела
processing Instruction Метод, вызываемый при обнаружении инструкции обработки

 


 

Образец подстановки XSLT: модель документа, трансформация деревьев, подстановками.

 

XSLT (eXtensible Stylesheet Language Transformations) — язык преобразования XML-документов. Спецификация XSLT входит в состав XSL и является рекомендацией W3C.

 

При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть сериализовано в виде XML-документа, XHTML-документа (только для XSLT 2.0), HTML-документа или простого текстового файла. Правила выбора (и, отчасти, преобразования) данных из исходного дерева пишутся на языке запросов XPath.

 

XSLT имеет множество различных применений, в основном в области web-программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC (англ. Model-view-controller). Другой стандартной задачей является преобразование XML-документов из одной XML-схемы в другую.

 

В процессе выполнения XSLT-преобразования задействованы:

· один или несколько входных XML-документов;

· одна или несколько таблиц cтилей XSLT;

· XSLT-процессор;

· один или несколько выходных документов.

В простейшем случае XSLT-процессор получает на входе два документа — входной XML-документ и таблицу стилей XSLT — и создает на их основе выходной документ.

Модель данных

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

Инструкции обработки и комментарии в стиле игнорируются: стиль обрабатывается так, как если бы в представляющем его дереве не было представлено ни узлов инструкций обработки, ни узлов комментариев.

Непосредственный потомок корневого узла

Обычные ограничения для непосредственного потомка корневого узла на конечное дерево не распространяется. Конечное дерево может иметь в качестве непосредственных потомкоы любую последовательность узлов, которые можно использовать как узел элемента. В частности, оно может иметь непосредственным потомком текстовый узел и любое количество узлов элементов. Если вывод осуществляется с помощью метода output из XML (см. главу [16 Вывод]), то может оказаться, что конечное дерево не является корректным XML документом. Однако оно корректной внешней общей разобранной сущностью будет всегда.

Если исходное дерево создано разбором корректного XML документа, корневой узел в исходном дереве автоматически удовлетворяет обычным ограничениям: непосредственным потомком не может быть текстовый узел, а может быть только один элемент. Когда исходное дерево создано как-нибудь иначе, например, с помощью DOM, то обычные ограничения ни на исходное дерево, ни на конечное не действуют.

Базовый URI

С каждым узлом связан URI, называемый его базовым URI, который используется для преобразования значений атрибутов, являющихся относительными URI, в абсолютные URI. Если элемент или инструкция обработки найдены во внешней сущности, то базовым URI для такого элемента или инструкции обработки будет URI этой внешней сущности. В противном случае базовым является URI самого документа. Базовым URI для узла документа является URI сущности документа. Базовым URI для текстового узла, узла комментария, узла атрибута и узла пространства имен является базовый URI родителя этого узла.

Неразобранные сущности

Корневой узел имеет схему отображения, которая определяет URI для каждой неразобранной сущности, декларированной в DTD данного документа. Этот URI создается из системного идентификатора и публичного идентификатора, указанного в декларации сущности. Чтобы для сущности найти URI, XSLT процессор может воспользоваться публичным идентификатором, вместо того чтобы обращаться к URI, указанному в системном идентификаторе. Если XSLT процессор для построения данного URI не пользуется публичным идентификатором, то он обязан воспользоваться системным идентификатором. Если системный идентификатор является относительным URI, он должен быть преобразован в абсолютный URI, используя в качестве базового URI того ресурса, который содержит декларацию данной сущности [RFC2396].

Удаление пробельных символов

После построения дерева исходного документа или документа стиля, но перед какой-либо его обработкой XSLT процессором, выполняется очистка (stripping) некоторых текстовых узлов. Текстовый узел вычищается только тогда, когда он содержит одни пробельные символы. При очистке текстовый узел удаляется из дерева документа. На вход процедура очистки получает перечень названий элементов, для которых следует сохранить пробельные символы. Процедура очистки применяется как для стилей, так и для исходных документов, однако перечень названий элементов, сохраняющих пробельные символы, для стилей и исходных документов определяется отдельно.

Трансформации дерева

Трансформация дерева конструирует результирующее дерево/result tree. В XSL это дерево называется дерево элементов и атрибутов с объектами, изначально находящимися в пространстве имён "объекта форматирования".

В этом дереве объект форматирования представлен как элемент XML со свойствами, представленными набором пар атрибут-значение XML. Содержимое объекта форматирования это содержимое элемента XML. Трансформация дерева определена в Рекомендациях XSLT [XSLT].

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

В некоторых реализациях XSL/XSLT результат конструирования дерева может быть выведен как документ XML. Это позволяет выводить XML-документ, который содержит объекты форматирования и свойства форматирования. Такая возможность ни обязательна для процессора XSL, ни навязывается ему. Бывают, однако, случаи, когда это имеет важное значение, как при подготовке сервером ввода для известного клиента; например, способ, которым сервер WAP (http://www.wapforum.org/faqs/index.htm) подготавливает специальный вывод для ручных WAP- устройств. Для сохранения доступности дизайнеры Web-систем не должны создавать архитектуры, требующие наличия (или использующие) передачу документов, содержащих объекты форматирования и свойства, если только передатчик не знает, что клиент может принимать объекты форматирования и свойства, или что передаваемый документ содержит ссылку на документ(ы)-источник(и), используемый при конструировании документа с объектами форматирования и свойствами.

Внизу приведена диаграмма, обозначающая этот концептуальный процесс.


 



Поделиться:


Последнее изменение этой страницы: 2016-08-06; просмотров: 359; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.69.167 (0.007 с.)