53
Презентацию подготовила Шигаева Алена, гр.950б

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

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

Page 4: Язык преобразования  XSLT
Page 5: Язык преобразования  XSLT

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

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

Документ можно преобразовать тремя способами:С помощью сервера – серверная программа, например

JAVA или JAVA SERVER PAGE, применяет таблицу стилей для автоматического преобразования документа и представления его клиенту.

С помощью клиента – клиентская программа, например браузер, выполняет преобразование путем чтения таблиц стилей, указанной с помощью инструкции по обработке <?xml-stylesheet?>.

С помощью отдельной программы – некоторые программы, обычно основанные на JAVA, предназначены для выполнения XSLT-преобразования.

Page 7: Язык преобразования  XSLT
Page 8: Язык преобразования  XSLT

Выполненного с помощью сервера Tomcat:

Page 9: Язык преобразования  XSLT
Page 10: Язык преобразования  XSLT
Page 11: Язык преобразования  XSLT

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

Page 12: Язык преобразования  XSLT
Page 13: Язык преобразования  XSLT
Page 14: Язык преобразования  XSLT
Page 15: Язык преобразования  XSLT
Page 16: Язык преобразования  XSLT

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

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

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

Корень документа – начало документа; Атрибут - данный узел включает значение атрибута наравне с объектными

ссылками, которые могут расширяться, и пропусками, которые могут удаляться;

Комментарий – данный узел включает текст комментария без знаков <!– и -->;

Элемент – этот узел содержит все символьные данные элемента, включая символьные данные любого дочернего элемента;

Пространство имен – данный узел содержит URIпространства имен; Инструкция по обработке – этот узел включает текст инструкции по

обработке, куда не входят символы <? и ?>; Текст – данный текст содержит текст узла.

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

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

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

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

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

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

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

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

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

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

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

Например, рассмотрим случай, когда элемент <PLANETS> можно заменить элементом <HTML>:

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

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

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

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

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

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

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

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

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

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

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

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

Начнем с match:

Установка соответствия с корневым узлом

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

Установка соответствия с элементами

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

Установка соответствия с потомками элементов

Установка соответствия с атрибутами

Page 30: Язык преобразования  XSLT
Page 31: Язык преобразования  XSLT
Page 32: Язык преобразования  XSLT

Теперь select:

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

Шаг локализации состоит из оси, узла тестирования и нуля или других предикатов.

Оси XPath

Page 33: Язык преобразования  XSLT
Page 34: Язык преобразования  XSLT

Узлы тестирования Xpath

Предикаты XPath

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

Самое важное заданное по умолчанию правило применяется по отношению к элементам и может выражаться следующим образом:

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

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

Аналогичное заданное по умолчанию правило применяется по отношению к атрибутам,

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

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

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

Аналогичное утверждение справедливо и для комментариев, для которых заданное по умолчанию правило можно выразить так:

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

Результат:

Page 37: Язык преобразования  XSLT
Page 38: Язык преобразования  XSLT

Создание шаблонов атрибутов

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

Результирующий документ:

Создание новых элементов

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

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

Page 41: Язык преобразования  XSLT
Page 42: Язык преобразования  XSLT

Получаем следующий результат:

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

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

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

Пример:

Page 44: Язык преобразования  XSLT
Page 45: Язык преобразования  XSLT

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

Рассмотрим соответствующий пример:

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

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

Пример, в котором показано, как отсортировать планеты с учетом их плотности:

Page 47: Язык преобразования  XSLT
Page 48: Язык преобразования  XSLT

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

Пример: перечисляем планеты и в конце горизонтальная линия.

Page 49: Язык преобразования  XSLT
Page 50: Язык преобразования  XSLT

Результат:

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

Применение xsl : choose

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

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

Правило: если узлом документа для результирующего документа является <HTML>, XSLT-процессору известно, что типом результирующего документа является HTML-код, и документ записывается соответствующем образом.

Можно указать три типа результирующих документов. XML задан по умолчанию, подобный документ начинается с объявления <?

xml?>. Кроме того, объектные ссылки не заменяются в результирующем документе символами, например < либо &; в результате отображается реальная объектная ссылка.

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

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

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

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

Другим полезным атрибутом для <xsl : output> является indent,позволяющий XSLT-процессору включить пропуск для выделения результата:

Атрибуты для <xsl : output> ,которые можнот использовать для создания или обновления XML-объявлений: