XML - статьи


Если мы откроем этот файл


Рассмотрим простой пример XML-файла ().
<?xml version="1.0" encoding="WINDOWS-1251"?>

<tutorial>

<title>"Заметки об XSL"</title>

<author>Леонов Игорь Васильевич</author>

</tutorial>
Если мы откроем этот файл в браузере Internet Explorer, то мы увидим тот же самый текст, который приведен выше, вместе со всеми тегами и служебной информацией. Но нам не нужны теги и служебная информация! Мы хотим видеть только ту информацию, которая относится к делу, а при помощи тегов - управлять внешним видом этой информации. Эта задача решается легко и просто: необходимо к XML-файлу добавить шаблон преобразования - XSL-файл.
Перепишем наш XML-файл в следующем виде ().
<?xml version="1.0" encoding="WINDOWS-1251"?>

<?xml-stylesheet type='text/xsl' href='ex01-1.xsl'?>

<tutorial>

<title>"Заметки об XSL"</title>

<author>Леонов Игорь Васильевич</author>



</tutorial>
И создадим XSL-файл . Текст файла приведен ниже.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<p><strong><xsl:value-of select="//title"/></strong></p>

<p><xsl:value-of select="//author"/></p>

</xsl:template>

</xsl:stylesheet>
Если мы теперь откроем файл ex01-1.xsl в браузере Internet Explorer, то мы увидим, что наша задача решена, - на экране осталась только необходимая нам информация, все теги исчезли. Результат, который вы получите на экране браузера, приведен ниже.
"Заметки об XSL"
Леонов Игорь Васильевич
Легко также увидеть, что порядок вывода строк у нас определяется только содержанием шаблона преобразования - XSL-файла. При необходимости шаблон можно легко поменять, абсолютно не меняя наш основной XML-файл.
Перепишем XML-файл. Информационную часть изменять не будем, а шаблон укажем другой .


<?xml version="1.0" encoding="WINDOWS-1251"?>

<?xml-stylesheet type='text/xsl' href='ex01-2.xsl'?>

<tutorial>

<title>"Заметки об XSL"</title>

<author>Леонов Игорь Васильевич</author>

</tutorial>
Создадим XSL-файл . Текст файла приведен ниже.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<p><strong><xsl:value-of select="//author"/></strong></p>

<p><xsl:value-of select="//title"/></p>

</xsl:template>

</xsl:stylesheet>
Если мы теперь откроем файл ex01-2.xsl в браузере Internet Explorer, то результат будет другим.
Леонов Игорь Васильевич
"Заметки об XSL"
Отметим теперь момент, который является ключевым для разработчиков баз данных. Информация в XML-странице появляется, как правило, в результате запроса к базе данных. Запрос к базе данных в многопользовательской среде - это весьма дорогостоящая операция. Предположим теперь, что у нас нет XML и мы формируем стандартные статические HTML-страницы. В этом случае для решения задачи простого преобразования внешнего представления информации, например, для изменения сортировки, у нас есть два способа решения проблемы: выполнить запрос и сохранить результаты в каком-либо временном буфере на сервере или каждый раз при изменении внешнего представления выполнять новый запрос и формировать HTML-страницу заново.
Первый способ требует трудоемкого программирования, второй способ значительно увеличивает нагрузку на сервер базы данных, производительность которого часто является узким местом системы, - пользователю всегда хочется получать результаты быстрее.
XML и XSL - это исчерпывающее решение описанной выше проблемы. Фактически XML-страница - это и есть временный буфер для результатов запросов. Только вместо нестандартного и трудоемкого программирования мы теперь используем стандартный механизм XSL.
Есть и еще одно соображение, которое может быть существенным для разработчиков баз данных. Большинство современных СУБД могут форматировать результаты запроса к базе данных в виде XML-файла. То есть при построении интерфейса пользователя в рамках технологии XML и XSL мы добиваемся определенной независимости от поставщика СУБД. В части организации вывода - практически полной независимости. А эта часть весьма велика в большинстве прикладных систем, ориентированных на работу с базами данных. Конечно, помимо вывода есть еще ввод и серверная обработка бизнес-логики, но здесь вам придется искать какие-то иные решения.

Содержание раздела