вывод погоды

#
вывод погоды
Добрый день! подскажите мне плиз, я хочу организовать подачу погоды на своем сайте...нашел такое код...
<?xml version="1.0" ?>
- <MMWEATHER>
- <REPORT type="frc3">
- <TOWN index="99154" sname="%DD%E9%ED%2D%C1%EE%EA%E5%EA" latitude="31" longitude="35">
- <FORECAST day="1" month="2" year="2008" hour="21" tod="3" predict="18" weekday="6">
  <PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0" />
  <PRESSURE max="770" min="768" />
  <TEMPERATURE max="8" min="6" />
  <WIND min="1" max="3" direction="7" />
  <RELWET max="83" min="78" />
  <HEAT min="6" max="8" />
  </FORECAST>
- <FORECAST day="2" month="2" year="2008" hour="3" tod="0" predict="24" weekday="7">
  <PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0" />
  <PRESSURE max="770" min="768" />
  <TEMPERATURE max="5" min="3" />
  <WIND min="1" max="3" direction="6" />
  <RELWET max="90" min="85" />
  <HEAT min="3" max="5" />
  </FORECAST>
- <FORECAST day="2" month="2" year="2008" hour="9" tod="1" predict="30" weekday="7">
  <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0" />
  <PRESSURE max="770" min="768" />
  <TEMPERATURE max="8" min="6" />
  <WIND min="1" max="3" direction="3" />
  <RELWET max="80" min="75" />
  <HEAT min="6" max="8" />
  </FORECAST>
- <FORECAST day="2" month="2" year="2008" hour="15" tod="2" predict="36" weekday="7">
  <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0" />
  <PRESSURE max="767" min="765" />
  <TEMPERATURE max="15" min="13" />
  <WIND min="3" max="6" direction="7" />
  <RELWET max="46" min="41" />
  <HEAT min="13" max="15" />
  </FORECAST>
  </TOWN>
  </REPORT>
  </MMWEATHER>

и есть ссылка http://informer.gismeteo.ru/xml/99154_1.xml
что нужно сделать и написать чтобы выводилась погода:???
Модератор
#
Re: вывод погоды
Демонстрационный пример, править по своему вкусу:
<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

<!-- ПогодаGismeteo -->

<xsl:template match="/MMWEATHER/REPORT">
   <xsl:apply-templates select="TOWN"/>
</xsl:template>

<xsl:template match="TOWN">
   <table>
      <tr>
         <td>Время</td>
         <xsl:apply-templates select="FORECAST" mode="caption"/>
      </tr>
      <tr>
         <td bgcolor="white">Облачность</td>
         <xsl:apply-templates select="FORECAST" mode="cloud"/>
      </tr>
      <tr>
         <td>Осадки</td>
         <xsl:apply-templates select="FORECAST" mode="precipitation"/>
      </tr>
      <tr>
         <td bgcolor="white">Tемпература воздуха, °C</td>
         <xsl:apply-templates select="FORECAST" mode="temperature"/>
      </tr>
      <tr>
         <td>Атмосферное давление, мм</td>
         <xsl:apply-templates select="FORECAST" mode="presure"/>
      </tr>
      <tr>
         <td bgcolor="white">Влажность воздуха,%</td>
         <xsl:apply-templates select="FORECAST" mode="wet"/>
      </tr>
      <tr>
         <td>Ветер, метр/сек</td>
         <xsl:apply-templates select="FORECAST" mode="wind"/>
      </tr>
      <tr>
         <td bgcolor="white">Комфорт,°С</td>
         <xsl:apply-templates select="FORECAST" mode="heat"/>
      </tr>
   </table>
</xsl:template>

<!-- Заголовки столбцов -->
<xsl:template match="FORECAST" mode="caption">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:choose>
         <xsl:when test="@hour = 9">Утро</xsl:when>
         <xsl:when test="@hour = 15">День</xsl:when>
         <xsl:when test="@hour = 21">Вечер</xsl:when>
         <xsl:when test="@hour = 3">Ночь</xsl:when>
         <xsl:otherwise></xsl:otherwise>
      </xsl:choose><br />
      <xsl:value-of select="@day"/><br />
      <xsl:choose>
         <xsl:when test="@month = 1">Янв</xsl:when>
         <xsl:when test="@month = 2">Фев</xsl:when>
         <xsl:when test="@month = 3">Мар</xsl:when>
         <xsl:when test="@month = 4">Апр</xsl:when>
         <xsl:when test="@month = 5">Май</xsl:when>
         <xsl:when test="@month = 6">Июнь</xsl:when>
         <xsl:when test="@month = 7">Июль</xsl:when>
         <xsl:when test="@month = 8">Авг</xsl:when>
         <xsl:when test="@month = 9">Сен</xsl:when>
         <xsl:when test="@month = 10">Окт</xsl:when>
         <xsl:when test="@month = 11">Нояб</xsl:when>
         <xsl:when test="@month = 12">Дек</xsl:when>
         <xsl:otherwise></xsl:otherwise>
      </xsl:choose><br />
      <xsl:choose>
         <xsl:when test="@weekday = 1">Вс</xsl:when>
         <xsl:when test="@weekday = 2">Пн</xsl:when>
         <xsl:when test="@weekday = 3">Вт</xsl:when>
         <xsl:when test="@weekday = 4">Ср</xsl:when>
         <xsl:when test="@weekday = 5">Чт</xsl:when>
         <xsl:when test="@weekday = 6">Пт</xsl:when>
         <xsl:when test="@weekday = 7">Сб</xsl:when>
         <xsl:otherwise></xsl:otherwise>
      </xsl:choose>      
   </td>
</xsl:template>

<!-- Облачность -->
<xsl:template match="FORECAST" mode="cloud">
   <td align="center">
      <xsl:choose>
         <xsl:when test="@hour = 9 or @hour = 15">
            <xsl:choose>
               <xsl:when test="PHENOMENA/@cloudiness = 0">
                  <img src="http://test/gismeteo/sun.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 1">
                  <img src="http://test/gismeteo/sunc.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 2">
                  <img src="http://test/gismeteo/suncl.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 3">
                  <img src="http://test/gismeteo/moond.gif" />
               </xsl:when>
               <xsl:otherwise></xsl:otherwise>
            </xsl:choose>
         </xsl:when>
         <xsl:otherwise>
            <xsl:choose>
               <xsl:when test="PHENOMENA/@cloudiness = 0">
                  <img src="http://test/gismeteo/moon.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 1">
                  <img src="http://test/gismeteo/moonc.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 2">
                  <img src="http://test/gismeteo/mooncl.gif" />
               </xsl:when>
               <xsl:when test="PHENOMENA/@cloudiness = 3">
                  <img src="http://test/gismeteo/moond.gif" />
               </xsl:when>
               <xsl:otherwise></xsl:otherwise>
            </xsl:choose>
         </xsl:otherwise>
      </xsl:choose>
   </td>
</xsl:template>

<!-- Осадки -->
<xsl:template match="FORECAST" mode="precipitation">
   <td align="center">
      <xsl:choose>
         <!-- Утро/день -->
         <xsl:when test="@hour = 9 or @hour = 15">
            <xsl:choose>
               <!-- Дождь -->
               <xsl:when test="PHENOMENA/@precipitation = 4">
                  <img src="http://test/gismeteo/rains.gif" />
               </xsl:when>
               <!-- Ливень -->
               <xsl:when test="PHENOMENA/@precipitation = 5">
                  <img src="http://test/gismeteo/rain.gif" />
               </xsl:when>
               <!-- Снег -->
               <xsl:when test="PHENOMENA/@precipitation = 6">
                  <img src="http://test/gismeteo/snows.gif" />
               </xsl:when>
               <!-- Снегопад -->
               <xsl:when test="PHENOMENA/@precipitation = 7">
                  <img src="http://test/gismeteo/snows.gif" />
               </xsl:when>
               <!-- Гроза -->
               <xsl:when test="PHENOMENA/@precipitation = 8">
                  <img src="http://test/gismeteo/strm.gif" />
               </xsl:when>
               <!-- Ясно или нет данных -->
               <xsl:when test="PHENOMENA/@precipitation = 9 or PHENOMENA/@precipitation = 10">
                  <img src="http://test/gismeteo/sky.gif" />
               </xsl:when>
               <xsl:otherwise></xsl:otherwise>
            </xsl:choose>
         </xsl:when>
         <!-- Вечер/ночь -->
         <xsl:otherwise>
            <xsl:choose>
               <!-- Дождь -->
               <xsl:when test="PHENOMENA/@precipitation = 4">
                  <img src="http://test/gismeteo/nrains.gif" />
               </xsl:when>
               <!-- Ливень -->
               <xsl:when test="PHENOMENA/@precipitation = 5">
                  <img src="http://test/gismeteo/nrain.gif" />
               </xsl:when>
               <!-- Снег -->
               <xsl:when test="PHENOMENA/@precipitation = 6">
                  <img src="http://test/gismeteo/nsnows.gif" />
               </xsl:when>
               <!-- Снегопад -->
               <xsl:when test="PHENOMENA/@precipitation = 7">
                  <img src="http://test/gismeteo/nsnows.gif" />
               </xsl:when>
               <!-- Гроза -->
               <xsl:when test="PHENOMENA/@precipitation = 8">
                  <img src="http://test/gismeteo/nstrm.gif" />
               </xsl:when>
               <!-- Ясно или нет данных -->
               <xsl:when test="PHENOMENA/@precipitation = 9 or PHENOMENA/@precipitation = 10">
                  <img src="http://test/gismeteo/nsky.gif" />
               </xsl:when>
               <xsl:otherwise></xsl:otherwise>
            </xsl:choose>
         </xsl:otherwise>
      </xsl:choose>
   </td>
</xsl:template>

<!-- Температура воздуха -->
<xsl:template match="FORECAST" mode="temperature">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:if test="TEMPERATURE/@max > 0">+</xsl:if>
      <xsl:value-of select="TEMPERATURE/@max"/><br />
      <xsl:if test="TEMPERATURE/@min > 0">+</xsl:if>
      <xsl:value-of select="TEMPERATURE/@min"/>
   </td>
</xsl:template>

<!-- Атмосферное давление -->
<xsl:template match="FORECAST" mode="presure">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:value-of select="PRESSURE/@max"/><br />
      <xsl:value-of select="PRESSURE/@min"/>
   </td>
</xsl:template>

<!-- Влажность воздуха -->
<xsl:template match="FORECAST" mode="wet">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:value-of select="RELWET/@max"/><br />
      <xsl:value-of select="RELWET/@min"/>
   </td>
</xsl:template>

<!-- Ветер -->
<xsl:template match="FORECAST" mode="wind">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:choose>
         <xsl:when test="WIND/@direction = 0">С</xsl:when>
         <xsl:when test="WIND/@direction = 1">С-В</xsl:when>
         <xsl:when test="WIND/@direction = 2">В</xsl:when>
         <xsl:when test="WIND/@direction = 3">Ю-В</xsl:when>
         <xsl:when test="WIND/@direction = 4">Ю</xsl:when>
         <xsl:when test="WIND/@direction = 5">Ю-З</xsl:when>
         <xsl:when test="WIND/@direction = 6">З</xsl:when>
         <xsl:when test="WIND/@direction = 7">С-З</xsl:when>
         <xsl:otherwise></xsl:otherwise>
      </xsl:choose>
      <br /><xsl:value-of select="WIND/@min"/>-<xsl:value-of select="WIND/@max"/>
   </td>
</xsl:template>

<!-- Комфорт -->
<xsl:template match="FORECAST" mode="heat">
   <!-- Определяем цвет ячейки, по времени суток -->
   <xsl:variable name="td_color"><xsl:choose>
      <xsl:when test="@hour = 9">#FFF0F0</xsl:when>
      <xsl:when test="@hour = 15">#FFFFF0</xsl:when>
      <xsl:when test="@hour = 21">#F0FFF0</xsl:when>
      <xsl:when test="@hour = 3">#F0F0FF</xsl:when>
   </xsl:choose></xsl:variable>
   <td align="center" bgcolor="{$td_color}">
      <xsl:if test="HEAT/@max > 0">+</xsl:if>
      <xsl:value-of select="HEAT/@max"/><br />
      <xsl:if test="HEAT/@min > 0">+</xsl:if>
      <xsl:value-of select="HEAT/@min"/>
   </td>
</xsl:template>

</xsl:stylesheet>
#
Re: вывод погоды
Подскажите, пожалуйста, приведенный код каким образом интегрировать?
Т. е., чтобы его использовать нужно создать ИС, потом XSL-шаблон для этой ИС и туда это всё вставить? Приведите, пожалуйста, пошаговую инструкцию.
Спасибо!
Модератор
#
Re: вывод погоды
Belousoff,
Обрабатываете XML от Gismeteo указанным XSL-ом. обработка с помощью метода build класса xsl (подробнее см. в API)
#
Re: вывод погоды
HostCMS,
спасибо, конечно, скачал API, нашел «build», но, как и 80% (на мой взгляд), пользователей не особо разбираются в синтаксисе и прочих делах. С готовыми примерами — гораздо легче. А то, чтобы «прикрутить» мелочь, нужно вникать с головой в эти «программерские» дела. Увы, времени на это нет. И знаний.
Пожалуйста, если не затруднит, приведите пример готового кода. Код нужного города (в данном случае) или ссылку на гизметеовский шаблон — сможем.

Спасибо!
Модератор
#
Re: вывод погоды
<?
$path = 'http://site.ru/1.xml';

$xml = file_get_contents($path);

$xsl = new xsl();
echo $xsl->build($xml, 'ИмяXslШаблонаСПогодой';
?>
#
Re: вывод погоды
Огромное спасибо! Всё получилось.

Удачной недели!
#
Re: вывод погоды
У меня вопрос, по умолчанию тут погода выводится Утром, днем, вечером и ночью... а как сделать так чтобы вывод погоды происходил только за дневное время?
Делаю то благодаря чему, несмотря ни на что
Модератор
#
Re: вывод погоды
suba,
Не поверите - обрезать XSL-шаблон
#
Re: вывод погоды
этим я и занимался, обрезал его до невоабразима маленького размера и все равно погода в 4х временных зонах.. такой вот код вышел
<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- ПогодаGismeteo -->
   
   <xsl:template match="/MMWEATHER/REPORT">
      <xsl:apply-templates select="TOWN"/>
   </xsl:template>
   
   
   <xsl:template match="TOWN">
      <table cellpadding="3" cellspacing="3" style="margin-bottom:15px;">
         <tr>
            <td>°t</td>
            <td align="center" bgcolor="">Утро</td>
            <td align="center" bgcolor="">День</td>
            <td align="center" bgcolor="">Вечер</td>
            <td align="center" bgcolor="">Ночь</td>
         </tr>
         <tr>
            <td >Макс<br/>Мин</td>
            <xsl:apply-templates select="FORECAST" mode="temperature"/>
         </tr>
      </table>
   </xsl:template>

   <!-- Температура воздуха -->
   <xsl:template match="FORECAST" mode="temperature">
      <!-- Определяем цвет ячейки, по времени суток -->
      <xsl:variable name="td_color"><xsl:choose>
            
            <xsl:when test="@hour = 9">Утро</xsl:when>
            <xsl:when test="@hour = 15">День</xsl:when>
            <xsl:when test="@hour = 21">Вечер</xsl:when>
            <xsl:when test="@hour = 3">Ночь</xsl:when>
            
            <xsl:when test="@hour = 15">ltym</xsl:when>
            
            
      </xsl:choose></xsl:variable>
      <td align="center" bgcolor="{$td_color}">
         <xsl:if test="TEMPERATURE/@max > 0">+</xsl:if>
         <xsl:value-of select="TEMPERATURE/@max"/><br />
         <xsl:if test="TEMPERATURE/@min > 0">+</xsl:if>
         <xsl:value-of select="TEMPERATURE/@min"/>
      </td>
   </xsl:template>
   
</xsl:stylesheet>
Делаю то благодаря чему, несмотря ни на что
Авторизация