Логотип

Документация по макросам и шаблонам UMI.CMS

Внешние XML-данные: протокол UHttp

При помощи данного протокола, мы можем выводить на сайт данные из любого xml-ресурса через собственный XSLT-шаблон. Например, мы хотим выводить прогноз погоды посетителям нашего сайта. Для этого можно использовать, xml-ресурс, расположенный по адресу http://export.yandex.ru/weather/?city=26063 (погода в Петербурге).

Сами данные выглядят следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<weather>
    <date>
        <day>3</day>
        <month>10</month>
        <year>2011</year>
    </date>
    <city>Санкт-Петербург</city>
    <country>Россия</country>
    <weather_type>облачно</weather_type>
    <image>http://weather.yandex.ru/i/6.gif</image>
    <image2>http://weather.yandex.ru/i/5.png</image2>
    <temperature>+8</temperature>
    <pressure>756</pressure>
    <dampness>93</dampness>
</weather>

Эти данные мы можем легко включить в обработку в таблице стилей так же как, например, данные в формате UData или UPage, при помощи функции document(). Также мы можем оформить вывод этих данных так, как нам нужно, применив к ним шаблоны:

Подключение и обработка внешних XML-данных

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" encoding="utf-8"/>

    <xsl:template match="/">
    <html>
        <head>
            <meta></meta>
        </head>
        <body>
            <h1>Погода в Санкт-Петербурге сегодня:</h1>
            <xsl:apply-templates select="document('uhttp://export.yandex.ru/weather/?city=26063')/weather" />
        </body>
    </html>
    </xsl:template>

    <xsl:template match="weather">
        <p><xsl:value-of select="date/day"/>.<xsl:value-of select="date/month"/>.<xsl:value-of select="date/year"/></p>
        
        <p><xsl:value-of select="weather_type"/>:<img src="{image}"/></p>
        
        <p>Температура: <xsl:value-of select="temperature"/></p>
    </xsl:template>

</xsl:stylesheet>

Принимаемые параметры:

  • sourceCharset - позволяет указать необходимость перекодировки данных источника в utf-8 из указанной кодировки. Например, если данные отдаются в кодировке windows-1251, то для их корректного вывода необходимо провести конвертацию данных в формат utf-8, добавив параметр "sourceCharset=windows-1251" к строке вызова.
  • expire - позволяет указать необходимость кэширования результата на заданное количество секунд.