From: Илья Воронин <http://www.ivoronin.pp.ru/>
Newsgroups:
Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC)
Subject: Пример использования XML/XSLT
Оригинал: http://www.zlug.pp.ru/book/view/78
Пример использования XML/XSLT
Очень часто встает задача представления одних и тех-же данных в разных
форматах, например HTML и plain text. Естественно поддержкой обоих
документов вручную заниматься невозможно - это очень нудно Smiling .
Поэтому для этого можно воспользоваться прекрасными инструментами -
XML (как средством хранения данных) и XSLT (язык шаблонов, позволяющий
генерировать документы (преимущественно в HTML) на основе XML
деревьев).
В связи с поиском работы мне понадобилось написать резюме. При этом
требовалась поддержка трех его вариантов - короткое резюме в текстовом
формате, полное резюме в текстовом формате и наконец полное резюме в
HTML. Поддерживать одновременно три копии документа мне совсем не
хотелось Smiling Поэтому я сделал так: для начала создал (note:
описать DTD!) структуру своего резюме и записал её в виде XML файла -
resume.xml, приблизительно такого вида (очень сильно сокращено):
Теперь необходимо получить эти данные в виде HTML (из которого в
последствии легко сделать text/plain), для этого воспользуемся XSLT, и
создадим два шаблона - один для краткого резюме (short.xsl):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="common.xsl"/>
<xsl:template match="/resume">
<!-- Header (name, email etc> -->
<xsl:value-of select="@name"/>
<!-- End of header -->
<!-- Skills -->
Skills:
<xsl:for-each select="skills/skill">
<xsl:value-of select="@description"/>:
<xsl:for-each select="item">
<xsl:call-template name="wordlist"/>
</xsl:for-each>
</xsl:for-each>
<!-- End of skills -->
<!-- Certificates -->
Certificates:
<xsl:for-each select="certificates/certificate">
<xsl:call-template name="wordlist"/>
</xsl:for-each>
<!-- End of certifiactes -->
<!-- Education -->
Education:
<xsl:for-each select="education/item">
<xsl:call-template name="wordlist"/>
</xsl:for-each>
<!-- End of education -->
<!-- Experience -->
Experience:
<xsl:for-each select="experience/organisation">
<xsl:value-of select="@name"/> () -
</xsl:for-each>
<!-- End of experience -->
</xsl:template>
</xsl:stylesheet>
и получим четыре документа, содержащих одну и ту же информацию.
Информация по теме:
* XML и XSLT в примерах для начинающих (http://citforum.ru/internet/xmlxslt/xmlxslt.shtml)
* Язык преобразований XSL (XSLT). Версия 1.0 (http://citforum.ru/internet/xslt/index.shtml)
* Реализация XSL-преобразований при разработке сайтов с
XML-наполнением страниц (http://citforum.ru/internet/xml/xsl_preobrazovaniy/)
* Ну и конечно спецификации XML и XSTL на http://www.w3c.org/
1153 Прочтений • [Пример использования XML/XSLT (xml web xslt)] [08.05.2012] [Комментариев: 0]