Во многих языках программирования существует традиция в качестве первого примера реальной программы приводить программу, которая содержит саму себя. Поскольку XSLT аналогичен языку программирования, то предложенный пример будет содержать цитату из начала главы.
Пример. Исходный документ имеет следующий вид:
<?xml version='1.0'?> <famous_quote>
Быть иль не 6biTb?</famous_quote>
Просмотрим этот файл в браузере Internet Explorer 5.0 (таблица стилей задана по умолчанию). К сожалению, его представление далеко от совершенства (рис. 12.1).
Естественно, дизайнер не стремился отобразить на экране дескрипторы начала и конца записи для элемента <f amous_quote>. Применим преобразования XSL Transformation для получения нужного изображения XHTML-файла в браузере Internet Explorer. Выходной файл должен иметь следующий вид:
<html> <head> <title>
Shakespeare Quotation
</title>
</head>
<body>
<Ь1>Быть иль не быть?</Ь1>
</body>
</html>
Примечание В выходном файле могут отсутствовать необходимые пробелы и отступы. Поэтому, в отличие от представленного здесь XHTML-документа, его трудно читать. Во избежание лишних проблем не пытайтесь управлять отступами в таблицах стилей и выходном документе.
При просмотре получившегося файла в Internet Explorer 5.0 становится ясно, что разработчику удалось достичь определенных успехов: в изображении выделен заголовок и намечена структура документа (рис. 12.2).
Ниже представлена XSLT-таблица стилей, которая позволяет получить такой тип изображения:
<?xml version-'1.0' ?> <xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="l.0">
<xsl:template match-"/">
<html>
<head>
<title>
Shakespeare Quatation </title>
</head> <body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="famous_quote"> <hlxxsl :value-of select=" . "/></hl> </xsl:template> </xsl:stylesheet>
Чтобы понять алгоритм работы таблицы стилей, рассмотрим каждую строку документа:
<?xml version='1.О'?>
Представленная строка - это XML-объявление. Ее советуют включать в XSLT-таблицы преобразования стилей, но смысловой нагрузки она не несет.
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="l.0">
Открывающий тэг элемента <xsl: stylesheet> сообщает о том, что XSL-пространство имен настоящего документа использует заявленный консорциумом W3C для применения в XSLT-документах универсальный идентификатор ресурсов (URI).
<xsl:template match="/">
Элемент <xsl: template> служит ключевым для запуска многих XSLT-таб-лиц преобразования. Слэш является XPath-выражением, указывающим на корень документа. Поскольку исходный XML-документ, как и все деревья исходных документов, содержит корень, к нему применяется XSLT-шаблон. Главная функция, которую выполняет элемент <xsl: template>, состоит в выводе последовательности строк, формирующих XHTML-файл:
<html> <head> <title>
Shakespeare Quotation
</title>
</head>
<body>
Данный этап завершает ввод инициализирующей последовательности строк документа на языке XHTML. На выходе она примет вид литерального текста:
<xsl:apply-templates/>
Элемент <xsl: apply-templates/> используется для просмотра всех элементов, входящих в состав исходного XML-документа, и применения всех шаблонов, сопоставимых с соответствующими узлами элементов, которые входят в документ-источник.
</body> </html>
Закрывающие дескрипторы </body> и </html> выводятся в финальный файл после исполнения элемента <xsl: apply-templates/>.
Примечание Многие операции, исполняемые XSLT-процессором, не требуют соблюдения строгой последовательности. Однако для удобства восприятия этапов операций, включенных в таблицу преобразования стилей, лучше описывать конкретные действия по порядку.
Этим этапом литеральный выход завершается. Следующий элемент исходного кода - <xsl: templates>, вызываемый в результате исполнения предыдущего элемента - <xsl: apply-templates>:
</xsl:template>
<xsl:template match="famous_quote"> <hlxxsl: value-of select-" . "/></hl>
В записи присутствует элемент <xsl: templates который используется в качестве шаблона для элемента <f amous_quote>, принадлежащего исходному XML-документу. В данном случае в дереве, получаемом в качестве вывода, создается тэг <hl>. Затем элемент <xsl: value-of > применяется к содержимому элемента, который соответствует XPath-выражению «точка». Данная инструкция указывает, что текущим контекстом элемента <xsl: value-of > является содержимое элемента <f amous_quote> - строка текста «Быть иль не быть?». Она будет добавлена в дерево вывода на место, указанное элементом <xsl: apply-templates>, который размещен в XSLT-коде чуть выше.
</xsl:template> </xsl:stylesheets
Эти две строки закрывающие тэги. Первая завершает запись для элемента <xsl: tempi at е> (в данном случае XPath-выражение «точка» соответствует элементу <f amous_quote>), вторая - для элемента <xsl: stylesheet>.
Опубликовал vovan666
April 08 2013 14:58:17 ·
0 Комментариев ·
3622 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.