Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
egr 10.09.2002 12:27
<?xml version="1.0" encoding="windows-1251" ?> <article> <author id="1" /> <title>Урок 6. Работаем с XML</title> <body> <para>Представьте, что вам позволено придумывать любые теги с любыми атрибутами. То есть вы сами можете определять, что означает тот или иной выдуманный вами тег или атрибут.</para> <para>Такой код будет содержать данные, … </para> </body> <links> <link href="http://parser.ru/docs/xdocclass.htm">Класс xdoc</link> <link href="http://parser.ru/docs/xnodeclass.htm">Класс xnode</link> </links> </article>…но не их форматирование. Подготовкой данных может заняться один человек, а форматированием другой. Им достаточно договориться об используемых тегах и можно приступать к работе… одновременно.
<?xml version="1.0" encoding="windows-1251" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="article"> <html> <head><title><xsl:value-of select="title" /></title></head> <body><xsl:apply-templates select="body | links" /></body> </html> </xsl:template> <xsl:template match="body"> <xsl:apply-templates select="para" /> </xsl:template> <xsl:template match="links"> Ссылки по теме: <ul> <xsl:for-each select="link"> <li><xsl:apply-templates select="." /></li> </xsl:for-each> </ul> </xsl:template> <xsl:template match="para"> <p><xsl:value-of select="." /></p> </xsl:template> <xsl:template match="link"> <a href="{@href}"><xsl:value-of select="." /></a> </xsl:template> </xsl:stylesheet>Данные и шаблон преобразования готовы. Создаем article.html, в который заносим следующий код:
# входной xdoc документ $sourceDoc[^xdoc::load[article.xml]] # преобразование xdoc документа шаблоном article.xsl $transformedDoc[^sourceDoc.transform[article.xsl]] # выдача результата в HTML виде ^transformedDoc.string[ $.method[html] ]