| Новости | 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]
]