Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 154 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Кодирование

XML под маской HTML

  • 01.02.2004

Автор статьи: Константин Бажуков

>

 

XML под маской HTML

[введение в xslt]материал подготовил: Константин Бажуков
11.02.2004
 

Документы XML уже сейчас можно использовать для разделения содержания сайта и его дизайна, так как они хорошо подходят для хранения информации. В самом простом случае можно воспользоваться уже зарекомендовавшей себя технологией каскадных таблиц стилей, но их возможности для отображения XML-документов сильно ограничены, что не удивительно. Ведь главная задача XML — это структурирование информации, а не ее отображение. Но уже сейчас у нас есть прекрасный инструмент, который прекрасно справляется с отображением информации — это хорошо знакомый нам язык разметки HTML (или xHTML, который является полноценным диалектом XML). идеальным вариантом было бы совместить достоинства этих языков, используя их сильные стороны, и технология, позволяющая это сделать, уже существует и носит название расширяемого языка стилей XSL (eXtendible stylesheet language).

 

Язык XSL включает в себя несколько компонентов, но нас, в первую очередь, интересует такая его составная часть, как язык преобразований XSLT (XSL Transformation Language), который позволяет преобразовать XML-документ в документ с другой древовидной структурой. Иными словами, с его помощью можно преобразовывать документы с одного диалекта XML на другой. Этим и можно воспользоваться и при разработке веб-приложений, сохраняя информацию в XML-документах и преобразовывая ее при необходимости с помощью инструкций XSLT в диалект xHTML или правильный HTML с древовидной структурой. Этот способ очень походит для создания шаблонов сайтов, тем более что последние версии браузеров (Internet Explorer 5.5, Mozilla 1.5, Firebird) поддерживают эту технологию, и со временем она будет использоваться все шире. Помимо браузеров, существуют программы — например xsltproc, — позволяющие на основе файла XML и инструкций для его преобразования сгенерировать HTML-файл. Если создание статичного файла вас не устраивает, то возможность создавать HTML-код по запросу браузера на стороне сервера позволяют скриптовые языки программирования, что делает возможным использовать эту технологию даже с учетом устаревших браузеров. Не следует также забывать, что, несмотря на то что мы будем рассматривать возможности XSLT для преобразований в HTML-язык, вы можете создать несколько наборов инструкций для преобразования XML-файла в другие диалекты — например, в язык WML, создавая одновременно с обычным сайтом wap-сайт на основе одной и той же информации.

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

 <?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="example.xsl"?>
<stock>
<book>
<author>Поль Дюбуа</author>
<name>MySQL</name>
<price currency="р.">120</price>
</book>
<book>
<author>Роман Сюзи</author>
<name>Python</name>
<price currency="р.">170</price>
</book>
</stock>

Таблицы XSL можно использовать с браузерами последних поколений

Обратите внимание на вторую стоку документа, где инструкция xml-stylesheet связывает наш документ с таблицей стилей XSL. Синтаксис этой инструкции одинаков как для привычных таблиц CSS, так и для XSL, отличаясь только атрибутом type, который приобретает соответственно значения text/css и text/xsl. Атрибут href знаком нам по языку HTML и содержит ссылку на файл с таблицей стилей.

Рассмотрим простую таблицу стилей XSL example.xsl, которая, однако, содержит достаточно элементов, чтобы понять, как работает эта технология и использовать их для создания вполне работоспособных шаблонов:

<?xml version=»1.0″ encoding=»windows-1251″?>
<xsl:stylesheet version=»1.0″ xmlns:xsl=»http://www.w3.
org/1999/XSL/Transform»>

<xsl:template match=»stock»>
<html>
<head>
<title>Книги</title>
</head>
<body>
<table border=»1″ cellspacing=»0″ cellpadding=»3″>
<xsl:apply-templates />
</table>
</body>
</html>
</xsl:template>

<xsl:template match=»book»>
<tr>
<xsl:apply-templates />
</tr>
</xsl:template>

<xsl:template match=»author | name | price»>
<td>
<xsl:apply-templates />
<xsl:value-of select=»@currency» />
</td>
</xsl:template>

<xsl:template match=»text()»>
<xsl:value-of select=».» />
</xsl:template>

</xsl:stylesheet>

Таблицы CSS и XSL связываются с документами XML одинаково

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

<xsl:stylesheet version=»1.0″ xmlns:xsl=»http://www.w3.org/1999/XSL/Transform»>

указывает, что мы будем использовать схему для создания таблиц стилей xsl:stylesheet, которую можно обнаружить по адресу, указанному в атрибуте xmlns:xsl. Здесь также появляется префикс xsl, который задает название пространства имен, используемых в этой схеме. Он встретится во всех тегах нашей таблицы стилей XSL, указывая на их принадлежность к языку XSLT.

Необходимо указать схему, используемую в таблице стилей

В нашей таблице мы создадим набор шаблонов, привязанных к определенных узлам созданного нами XML-документа. Процессор xslt, встроенный в браузер или в виде отдельной программы, будет пробегать наш документ и, при совпадении условий, применять наши инструкции к элементам XML. Первым делом, естественно, мы должны создать шаблон для корневого элемента нашего документа stock. Шаблон создается с помощью тега xsl:template с атрибутом match, задающим элемент, для которого шаблон будет применен. В нашем случае задаем в соответствие корневому элементу стандартные блоки HTML-документа: html, head, title, body, а также создаем таблицу для более удобного представления информации, хранящейся в XML-документе. В блоке body мы применили инструкцию , задача которой — передать содержание элемента stock на обработку остальных шаблонов в нашей таблице стилей. Так как это корневой элемент, содержащий все элементы, то и для них будут применены прописанные далее в таблице шаблоны. По такому же принципу построен шаблон для тега book, создающий для каждого элемента строку таблицы.

Таблица стилей XSL — набор шаблонов для элементов XML

Следующий шаблон несколько сложней. В нем мы используем конструкции языка XPath, который когда-то был составной частью XSLT, но сейчас уже стал самостоятельной технологией. Его задача — обнаруживать определенные узлы XML по описанию заданному пользователем и передавать их другим инструментам, обрабатывающим документ XML. Благодаря ему мы можем воспользоваться оператором «|» в качестве логического «ИЛИ» для указания элементов, к которым мы хотим применить один и тот же шаблон. Таким образом, мы создаем один шаблон для элементов author, name и price.

В таблицах XSL широко иcпользуется язык XPath

В этом и следующем шаблонах мы используем еще одну инструкцию: xsl:value-of. Эта команда извлекает значение узла XML и помещает его в итоговый документ. Последний шаблон нашего документа обрабатывает текстовое содержание тегов XML, что также указывается с помощью команды XPath text(). Этот шаблон прописывать было не обязательно, т
ак как предыдущий шаблон неявно передает на обработку содержание узлов author, name и price, даже без наших указаний. Тем не менее явная обработка текстовых элементов документа делает наш шаблон более понятным. В команде xsl:value-of в атрибуте select тоже используется команда XPath «.», которая ссылается на текущий элемент. Таким образом, последний шаблон выполнтся при нахождении текстовой строки, извлечет ее значение и поместит в результирующий документ. Команда xsl:value-of используется также в шаблоне для элементов author, name, price — для извлечения значения атрибута currency тега price. В языке XPath символ «@» используется для обозначения атрибутов элементов, а выражение

<xsl:value-of select=»@currency» />

дает указание извлечь значение атрибута currency и поместить его в итоговый документ. Так как атрибут currency есть только в теге price, то во время обработки тегов author и name не будет возвращено никаких значений, что позволяет использовать эту инструкцию в одном шаблоне для нескольких тегов.

Результат обработки XML-документа с помощью нашей таблицы стилей XSL можно посмотреть браузерах последнего поколения:

Обратите внимание, что браузер показывает источник нашего документа как xml-документ, а в окне браузера он отображается как веб-страница — со всей информацией, которую мы хотели вывести.

Описанные выше инструкции XSLT — это вершина огромного айсберга возможностей, которые предоставляет эта технология. С ее помощью можно осуществлять сортировки информации, создавать циклические переборы узлов, примять проверки условий, выводить служебную информацию и так далее. Совместно с языком XPath можно получить доступ к любому элементу документа XML, а используя возможности HTML — создать любой дизайн отображения информации, полностью отделяя содержание ваших страниц от их дизайна.

Ссылки по теме

  • использование XML
  • Создание XML-документа

Помимо тегов, можно обрабатывать и атрибуты

Первоисточник — www.hostinfo.ru

Алексей Волков

Предыдущий материал
  • Мотивация персонала

Экзистенциальный компонент HRM

  • 26.01.2004
  • Алексей Волков
Read More
Следующий материал
  • CSS

Что такое каскадные таблицы стилей (CSS)

  • 02.02.2004
  • Алексей Волков
Read More
Вас также может заинтересовать
Read More
  • CSS

Формализация CSS

  • Алексей Волков
  • 23.05.2012
Read More
  • JQuery

Хитрости JQuery

  • jokar
  • 23.05.2012
Read More
  • JQuery

Закруглить углы изображения при помощи JQuery

  • jokar
  • 21.05.2012
Read More
  • JQuery

Знакомьтесь: Nivo Slider от jQuery

  • tamo
  • 28.09.2010
Read More
  • JQuery

Первое знакомство с jQuery: часть первая.

  • tamo
  • 26.09.2010
Read More
  • JQuery

Продолжаем изучать jQuery: часть вторая. Учимся выделять элементы.

  • tamo
  • 26.09.2010
Read More
  • JQuery

Продолжаем изучать jQuery: работа с анимацией. Часть третья.

  • tamo
  • 26.09.2010
Read More
  • Flash

TiltViewer — 3D Flash галерея

  • Nika75
  • 21.09.2010

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter