'

Язык преобразования XSLT

Понравилась презентация – покажи это...





Слайд 0

Язык преобразования XSLT Презентацию подготовила Шигаева Алена, гр.950б


Слайд 1

Это расширяемый язык таблиц стилей. Язык XSL фактически состоит из двух частей: языка преобразований и языка форматирования. Язык, предназначенный для выполнения преобразований, позволяет конвертировать структуры документов в различные формы (например, PDF,WML,HTML или иные типы схем), в то время как язык форматирования используется для оформления и определения стилей документов различными способами. Обе части языка XSL могут функционировать совершенно независимо одна от другой, поэтому их можно рассматривать в качестве независимых языков разметки. Язык XSLT


Слайд 2

Язык XSLT применяется для обработки документов, внесения изменений и необходимых дополнений в разметку. Его можно применять для преобразования XML-кода в отформатированный HTML-код. Язык XSLT обеспечивает доступ к содержимому XML-документов, а также применяется для создания новых документов на их основе. Для выполнения XSLT-преобразований используется два документа: преобразуемый документ и таблица стилей, определяющая само преобразование. В данном случае речь идет об XML-документах. Применение таблиц стилей XSLТ в XML-документах.


Слайд 3

Пример:


Слайд 4

Ниже показан примерный вид таблицы стилей. В данном случае содержимое файла преобразуется в HTML-код: Таблицы стилей XSL


Слайд 5

Документ можно преобразовать тремя способами: С помощью сервера – серверная программа, например JAVA или JAVA SERVER PAGE, применяет таблицу стилей для автоматического преобразования документа и представления его клиенту. С помощью клиента – клиентская программа, например браузер, выполняет преобразование путем чтения таблиц стилей, указанной с помощью инструкции по обработке <?xml-stylesheet?>. С помощью отдельной программы – некоторые программы, обычно основанные на JAVA, предназначены для выполнения XSLT-преобразования. Выполнение преобразования


Слайд 6

1) Выполнение преобразований с помощью сервера:


Слайд 7

Выполненного с помощью сервера Tomcat: Результат выполнения jslt-преобразования


Слайд 8

2) Применение браузеров для преобразования XML-документов:


Слайд 9

Результат преобразования:


Слайд 10

Для создания программы воспользуемся классом TransformerFactory для формирования нового объекта из этого класса. 3)Применение специальных программ


Слайд 11

МЕТОД Protected TransformerFactory() Abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) Abstract object getAttribute (String name) Abstract ErrorListener getErrorListener() Abstract boolean getFeature (String name) Abstract URIResolver getURIResilver() Static TransformerFactory newInstance() Abstract Templates newTemplates (Source source) Abstract Transformer new Transformer() ОПИСАНИЕ Заданный по умолчанию конструктор Получает спецификации таблиц стилей Возвращает определенные атрибуты Возвращает обработчик ошибочного события для TransformerFactory Возвращает значение свойства Получает объект, используемый по умолчанию в процессе преобразования для разрешения URI-ссылок Получает новый объект TransformerFactory Обрабатывает Source в объекте Templates Создает новый объект TransFormer, который использует источник для преобразований Методы класса TransformerFactory


Слайд 12

МЕТОД Abstract Transformer newTransformer (Source source) Abstract void setAttribute (String name, Object value) Abstract void setErrorListener (ErrorListener listener) Abstract void setURIResolver (URIResolver resolver) ОПИСАНИЕ Создает новый объект TransFormer, который применяет Source для выполнения преобразований Устанавливает определенные атрибуты Устанавливает слушатель событий, связанных с ошибками JAVA Устанавливает объект, применяемый по умолчанию во время преобразования для разрешения URI-ссылок


Слайд 13

МЕТОД Protected Transformer() Abstract void clearParameters() Abstract ErrorListener getErrorListener() Abstract Properties getOutputProperties() Abstract String getOutputProperty (String name) Abstract Object getParameter(String name) Abstract URIResolver getURIResolver() Abstract void setErrorListener (ErrorListener listener) Abstract void setOutputProperties (Properties oformat) Abstract void SetOutputProperty (String name, String value) ОПИСАНИЕ Заданный по умолчанию конструктор Очищает все параметры, установленные с помощью setParameter Возвращает обработчик сообщения об ошибке Возвращает копию выводимых свойств Возвращает значение выводимого свойства Возвращает параметр, с помощью setParameter либо setParameters Возвращает объект, используемый для разрешения URI-ссылки Устанавливает слушатель событий, связанных с ошибками JAVA Устанавливает выводимые свойства Устанавливает выводимое свойство Методы класса javax.xml.transform.Transformer


Слайд 14

МЕТОД Abstract void setParameter (String name, Object value) Abstract void setURIResolver (URIResolver resolver) Abstract void transform (Source xmlSource, Result outputTarget ОПИСАНИЕ Устанавливает параметр Устанавливает объект, применяемый для разрешения Uri-ссылки Выполняет преобразование


Слайд 15

Для выполнения преобразования воспользуемся методом transform объекта TransFormer, передавая ему преобразованный XML-документ: Пример


Слайд 16

В процессе XSLT-преобразований в качестве вводных данных используется дерево документа, в результате обработки которого формируется дерево результатов. В этом случае документы представляют собой деревья, построенные на основе узлов. Язык XSLT распознает семь типов XSLT-узлов. Эти узлы представлены в следующем списке, где также указан порядок их обработки XSLT-процессорами: Корень документа – начало документа; Атрибут - данный узел включает значение атрибута наравне с объектными ссылками, которые могут расширяться, и пропусками, которые могут удаляться; Комментарий – данный узел включает текст комментария без знаков <!– и -->; Элемент – этот узел содержит все символьные данные элемента, включая символьные данные любого дочернего элемента; Пространство имен – данный узел содержит URIпространства имен; Инструкция по обработке – этот узел включает текст инструкции по обработке, куда не входят символы <? и ?>; Текст – данный текст содержит текст узла. Создание таблиц стилей XSLT


Слайд 17

Для определения обрабатываемого узла XSLT предлагает различные способы, обеспечивающие установку соответствия с узлами или их выбора. Для начала разработаем небольшой пример, заменяющий корневой узел HTML-страницей.


Слайд 18

Таким образом начинает создаваться таблица стилей XSLT. Для обработки определенных узлов XML-документа XSLT использует шаблоны. В следующем примере требуется заменить корневой узел новым HTML-документом. Начнем с создания шаблона с помощью элемента <xsl:template>:


Слайд 19

При установлении соответствия с корневым узлом к нему применяется шаблон. В этом случае корневой узел заменяется HTML-документом, который непосредственным образом используется в качестве содержимого элемента <xsl:template>:


Слайд 20

Вот и все, что требуется выполнить в данной ситуации. С помощью элемента <xsl:template> в таблице стилей устанавливается правило. Когда XSL-процессор просматривает документ, в качестве первого узла выбирается корневой узел. Данное правило устанавливает соответствие с корневым узлом, поэтому XSL-процессор заменяет его HTML-документом. Результат:


Слайд 21

Шаблон описанный в предыдущем разделе, применяется только по отношению к корневому узлу. Выполняется тривиальное действие по замене полного XML-документа HTML-документом. Можно также применять шаблоны по отношению к дочерним элементам узла, с которым установлено соответствие. В этих целях применяется элемент <xsl:apply-templates>. Например, рассмотрим случай, когда элемент <PLANETS> можно заменить элементом <HTML>: Элемент xsl:apply-templates


Слайд 22

Чтобы удостовериться, что дочерние элементы корректно преобразованы воспользуемся элементом <xsl:apply-templates>следующим образом:


Слайд 23

Теперь можно применить шаблоны для дочерних узлов:


Слайд 24

Например, если требуется заменить текст из элемента <NAME> в каждом элементе <PLANET> в результирующем документе, используется следующий код:


Слайд 25

В данном примере выбирается название каждой из планет, включаемое в результирующий документ. Для получения названия каждой планеты применяется элемент <xsl:value-of> из шаблона, выбранного в элементе <PLANET>. Элемент <NAME> выделяется с помощью атрибута select: Получение значений узлов с помощью xsl:value-of


Слайд 26

Атрибут select выделяет только первый узел, соответствующий данному критерию. Но как быть, если требуется установить соответствие с несколькими узлами? Ответ: для выполнения цикла по всем возможным соответствиям можно воспользоваться элементом <xsl:for-each>: Обработка нескольких выделенных областей с помощью xsl:for-each


Слайд 27

Атрибуту match элемента <xsl:template> присущ специфический синтаксис; еще в большей степени сказанное справедливо в отношении атрибута select элементов <xsl:apply-templates>, <xsl:value-of>, <xsl:copy-of>, <xsl:for-each> и <xsl:sort>. Начнем с match: Установка соответствия с корневым узлом Определение шаблонов для атрибута match


Слайд 28

Установка соответствия с элементами Установка соответствия с дочерними элементами Установка соответствия с потомками элементов Установка соответствия с атрибутами


Слайд 29


Слайд 30


Слайд 31

Теперь select: Атрибут select использует выражения XPath .Основы XPath : чтобы указать узел или набор узлов в Xpath, применяется путь локализации. Путь локализации, в свою очередь, состоит из одного или большего числа шагов локализации, которые разделяются / или //. Если путь локализации начинается с /, он называется абсолютным путем локализации, поскольку начинается от корневого узла; иначе, путь локализации является относительным, начинаясь от текущего узла, именуемого контекстным узлом. Шаг локализации состоит из оси, узла тестирования и нуля или других предикатов. Оси XPath


Слайд 32


Слайд 33

Узлы тестирования Xpath Предикаты XPath


Слайд 34

Самое важное заданное по умолчанию правило применяется по отношению к элементам и может выражаться следующим образом: Это правило просто гарантирует то, что каждый элемент, от корневого и далее, обрабатывается с помощью <xsl:apply-templates/> в том случае, если не применяется никакое другое правило. Если же применить другое правило, это приведет к отмене соответствующего заданного по умолчанию правила. Заданное по умолчанию правило для текста может выражаться следующим образом: Аналогичное заданное по умолчанию правило применяется по отношению к атрибутам, Заданные по умолчанию XSLT-правила


Слайд 35

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


Слайд 36


Слайд 37

Создание шаблонов атрибутов Изменение структуры документа на основе вводных данных


Слайд 38

Результирующий документ: Создание новых элементов


Слайд 39

В случае, когда необходимо контролировать выбор названий элементов и содержимого, применяется элемент <xsl:attribute>. Пример: Создание новых атрибутов


Слайд 40

Генерирование комментариев с помощью xsl:comment


Слайд 41

Получаем следующий результат: Генерирование текста с помощью xsl:text С помощью этого элемента можно создавать текстовые узлы, которые позволяют выполнить замену целых элементов текстом «на лету». Одно из преимуществ элемента заключается в сохранении пропусков.


Слайд 42

Пример:


Слайд 43


Слайд 44

Элемент <xsl : copy> можно применять для копирования узлов, причем можно указывать отдельные копируемые части. Заданное по умолчанию правило для элементов состоит в том, что копируется только текст элемента. Но правило можно изменить, если воспользоваться элементом <xsl : copy> , который копирует целые элементы, текстовые узлы, атрибуты, инструкции по обработке и т.д. Рассмотрим соответствующий пример: Копирование узлов


Слайд 45

Элемент <xsl : sort> используется для выполнения сортировки наборов узлов. Этот элемент используется внутри <xsl : apply-templates>, а атрибут select этого элемента применяется для указания объекта сортировки. Пример, в котором показано, как отсортировать планеты с учетом их плотности: Сортировка элементов


Слайд 46


Слайд 47

С помощью элемента <xsl : if> можно выбирать варианты на базе вводного документа. Чтобы воспользоваться этим элементом, просто присвоить его атрибуту test выражение, оценивающее булевское значение. Пример: перечисляем планеты и в конце горизонтальная линия. Применение xsl:if


Слайд 48


Слайд 49

Результат:


Слайд 50

Применение xsl : choose Элемент < xsl : choose>во многом схож с JAVA –конструкцией switch,которая позволяет сравнивать тестовое значение с несколькими возможными. Например, предположим, что атрибут COLOR добавляется к каждому элементу <PLANET>:


Слайд 51

Правило: если узлом документа для результирующего документа является <HTML>, XSLT-процессору известно, что типом результирующего документа является HTML-код, и документ записывается соответствующем образом. Можно указать три типа результирующих документов. XML задан по умолчанию, подобный документ начинается с объявления <?xml?>. Кроме того, объектные ссылки не заменяются в результирующем документе символами, например < либо &; в результате отображается реальная объектная ссылка. HTML – стандартный html 4.0, без XML-объявления, то есть не возникает необходимости закрывать элементы, которые обычно не имеют завершающего тега. Пустые элементы могут заканчиваться с помощью >, но не />. Кроме того, символы < и & в тексте не заключаются в соответствующие символы объектных ссылок. TEXT – этот тип результирующего документа представляет собой сплошной текст. В этом случае результирующий документ представляет собой просто текст дерева документа. Контроль типа вывода


Слайд 52

Можно определить результирующий метод, присвоив атрибуту method элемента <xsl : output> значения “xml”, “html” либо “text”. Например если необходимо создать html-документ, даже если корневой элемент не является <HTML>, можно воспользоваться элементом <xsl : output>: Другим полезным атрибутом для <xsl : output> является indent,позволяющий XSLT-процессору включить пропуск для выделения результата: Атрибуты для <xsl : output> ,которые можнот использовать для создания или обновления XML-объявлений:


×

HTML:





Ссылка: