При помощи данного протокола, мы можем выводить на сайт данные из любого 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 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 - позволяет указать необходимость кэширования результата на заданное количество секунд.