Одежка для XML Никита Кислицин Хакер, номер #077, стр. 077-120-2 Так же тебе следует знать, что многие серверы баз данных уже умеют выводить результаты запросов прямо в формате XML и не за горами тот момент, когда генерация XML-моделей динамических страниц будет осуществляться еще на стадии выполнения запросов к базе данных. [как это использовать?] Файл преобразований XSLT – это, по сути своей, обычный XML-файл, имеющий строго определенный в спецификации формата вид. Этот файл подключается к XML-страницам при помощи следующего тэга: <?xml-stylesheet type='text/xsl' href='design.xsl'?> Чтобы тебе было понятнее, приведу пример простого xml-файла с данными и файла XSLT-преобразований. XML-файл с подключенным файлом преобразований <?xml version="1.0" encoding="windows-1251" ?> <?xml-stylesheet type='text/xsl' href='xsl.xsl'?> <xa number="77 (май)"> <vzlom caption="Взлом"> <article> <title>HackFaq</title> <comment>Хак-фак</comment> <author>Sidex</author> </article> ... ... </vzlom> </xa> Обрати внимание, на второй строчке этого документа указано, что для форматирования должен быть применен XSL-файл article.xls. [форматируем данные] Теперь, чтобы все работало, необходимо создать файл articles.xls и задать в нем правила форматирования. Делается это примерно так: Пример файла преобразований <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <h1><xsl:value-of select="xa/@number"/></h1> <h2><xsl:value-of select="xa/vzlom/@caption"/></h2> <table border="1" cellpadding="0"> <xsl:for-each select="xa/vzlom/article"> <tr><td><xsl:value-of select="title"/></td><td><xsl:value-of select="comment"/></td><td><xsl:value-of select="author"/></td></tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> Каждый файл с XSL-преобразованиями начинается с элемента xsl:stylesheet, в параметрах которого указывается версия (version='1.0') и статичная ссылка на пространство имен. Эта строка, вообще говоря, одинаковая для всех файлов преобразований. После главной строки в моем примере идет элемент xsl:template, указывающий шаблон элементов, для которых будет применены правила преобразований. Здесь можно указать тип элемента, его конкретное название, или довольно гибко определить целый класс подходящих под шаблон элементов. Я не буду приводить здесь полного описания шаблонов, ты найдешь его на нашем диске среди большого числа полезных документов, которые тебе настоятельно советую изучить. Третьей строчкой файла преобразований я вывожу в пределах тега h1 содержимое атрибута элемента с именем xa. Тут следует пояснить, что мы работаем в рамках шаблона, указывающего на корневой элемент (он обозначается символом “/”) и поэтому элемент xa – наш прямой потомок. Легко понять, что доступ к атрибутам какого-то элемента осуществляется при помощи конструкции element/@var. На пятой строке XSL-файла я вывожу тэг table, поскольку мне захотелось оформить файл в виде таблицы. Затем, при помощи элемента xsl:for-each, я организую своеобразный цикл по всем записям со статьями и вывожу информацию о них, форматируя в колонки таблицы при помощи тэгов <tr> и <td>. Обрати внимание, что в рамках цикла содержимое элементов получается так же, как и в обычном случае - при помощи элемента xsl:value-of. |