powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с choose в xsl
7 сообщений из 7, страница 1 из 1
Помогите с choose в xsl
    #33633593
Alex Braun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть xsl файлик, который разгребает xml с погодой и выводит в html мне на сайт.
Но вместо неудобных цифр я вывожу картинки с солнышком, облаками и т.д.
Все устраивает, но немного нелепо, когда погода описывает ночь, а картинка солнце. Хочу, в зависимости от времени суток подставлять либо дневной рисунок, либо ночной. На сколько я понял, нужно использовать choose и otherwise, но информация о времени суток лежит в другом темплейте, как сравнивать данные из разных темплейтов? Вот фрагмент кода, помогите плз.
.....
<xsl:if test="@hour = 3"> ночь</xsl:if>
<xsl:if test="@hour = 9"> утро</xsl:if>
<xsl:if test="@hour = 15"> день</xsl:if>
<xsl:if test="@hour = 21"> вечер</xsl:if>
</td></tr>
<tr>
<td><xsl:apply-templates select="PHENOMENA"/></td>
<td><xsl:apply-templates select="TEMPERATURE"/><br/>
<xsl:apply-templates select="WIND"/></font></td>
</tr>
</xsl:template>

<xsl:template match="PHENOMENA">
<xsl:if test="@cloudiness = 0">
<img src="images/weather/pheno0.gif"></img></xsl:if>
<xsl:if test="@cloudiness = 1">
<img src="images/weather/pheno1.gif"></img></xsl:if>
<xsl:if test="@cloudiness = 2">
<img src="images/weather/pheno2.gif"></img></xsl:if>
<xsl:if test="@cloudiness = 3">
<img src="images/weather/pheno3.gif"></img></xsl:if>
......


Всем спасибо,кто откликнется.
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33634132
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<xsl:template match="PHENOMENA">
<xsl:if test="@cloudiness = 0">
...

вместо этого, нужно сделать в таком духе:

<xsl:template match="PHENOMENA">
<xsl:if test="@cloudiness = 0 and hour = 3">
...


А еще проще использовать специальное именование картинок и не париться с if'ами:

<img src="images/weather/pheno{@cloudiness}_{@hour}.gif"></img>
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33635383
Alex Braun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за отзыв

Ненавижу регистрацию
Код: plaintext
1.
2.
3.
4.
5.
6.
вместо этого, нужно сделать в таком духе:

<xsl:template match="PHENOMENA">
<xsl:if test="@cloudiness = 0 and hour = 3">
...



но в таком духе не работает.
Даже если я просто только hour осталяю

<xsl:template match="PHENOMENA">
<xsl:if test="@hour = 3">
...

hour ведь из другого темплейта, и в темплейте PHENOMENA на него никакой реакции. Ошибки, правда не выдает, но и не обрабатывает условие.
Может привести весь код, чтоб проще было разобраться?
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33635572
Alex BraunМожет привести весь код, чтоб проще было разобраться?
Показывайте и XSL, и XML...посмотрим, что на самом деле означает ваше" hour ведь из другого темплейта ".
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33635630
Alex Braun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
примного благодарен.
вот файлик с погодой в xml
(чтоб не захломлять пост даю ссылку.)
http://informer.gismeteo.ru/xml/34300_1.xml

А вот мои рукоделия:

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

<xsl:template match="MMWEATHER">
<html>
<head>
<title>Погода</title>
</head>
<body>
<table>
<xsl:apply-templates select="REPORT" />
</table>
</body>
</html>
</xsl:template>

<xsl:template match="FORECAST">
<tr>
<td colspan="2"><xsl:value-of select="(@day)" />
<xsl:if test="@month = 1"> янв. </xsl:if>
<xsl:if test="@month = 2"> фвр. </xsl:if>
<xsl:if test="@month = 3"> мрт. </xsl:if>
<xsl:if test="@month = 4"> апр. </xsl:if>
<xsl:if test="@month = 5"> мая </xsl:if>
<xsl:if test="@month = 6"> июня </xsl:if>
<xsl:if test="@month = 7"> июля </xsl:if>
<xsl:if test="@month = 8"> авг. </xsl:if>
<xsl:if test="@month = 9"> снт. </xsl:if>
<xsl:if test="@month = 10"> окт. </xsl:if>
<xsl:if test="@month = 11"> ноя. </xsl:if>
<xsl:if test="@month = 12"> дек. </xsl:if>
<xsl:if test="@weekday = 1"><font color="red"> Вс. </font></xsl:if>
<xsl:if test="@weekday = 2"> П н. </xsl:if>
<xsl:if test="@weekday = 3"> Вт. </xsl:if>
<xsl:if test="@weekday = 4"> Ср. </xsl:if>
<xsl:if test="@weekday = 5"> Чт. </xsl:if>
<xsl:if test="@weekday = 6"> Пт. </xsl:if>
<xsl:if test="@weekday = 7"> Сб. </xsl:if>
<xsl:if test="@hour = 3"> ночь</xsl:if>
<xsl:if test="@hour = 9"> утро</xsl:if>
<xsl:if test="@hour = 15"> день</xsl:if>
<xsl:if test="@hour = 21"> вечер</xsl:if></td>
</tr>
<tr>
<td><xsl:apply-templates select="PHENOMENA"/></td>
<td><xsl:apply-templates select="TEMPERATURE"/><br/>
<xsl:apply-templates select="WIND"/></td>
</tr>
</xsl:template>

<xsl:template match="PHENOMENA">
<img src="images/weather/pheno{@cloudiness}.gif"></img><br/>

<!-- с именами картинок круто получилось! спасибо-->

<img src="images/weather/pheno{@precipitation}.gif"></img>
</xsl:template>

<xsl:template match="TEMPERATURE">
<font size="2"><big>t<sup>o</sup>C </big></font><xsl:value-of select="(@min)" />... <xsl:value-of select="(@max)" /><sup>o</sup>
</xsl:template>

<xsl:template match="WIND"> <!-- тут я тоже картнки переделаю потом -->
<xsl:if test="(@direction) = 0"><img src="images/weather/n.gif"></img></xsl:if>
<xsl:if test="(@direction) = 1"><img src="images/weather/ne.gif"></img></xsl:if>
<xsl:if test="(@direction) = 2"><img src="images/weather/e.gif"></img></xsl:if>
<xsl:if test="(@direction) = 3"><img src="images/weather/se.gif"></img></xsl:if>
<xsl:if test="(@direction) = 4"><img src="images/weather/s.gif"></img></xsl:if>
<xsl:if test="(@direction) = 5"><img src="images/weather/sw.gif"></img></xsl:if>
<xsl:if test="(@direction) = 6"><img src="images/weather/w.gif"></img></xsl:if>
<xsl:if test="(@direction) = 7"><img src="images/weather/nw.gif"></img></xsl:if>
<xsl:value-of select="(@min)" />-<xsl:value-of select="(@max)" /> м/сек
</xsl:template>

</xsl:stylesheet>

Ну вот вроде так.
сейчас это выглядит все:
http://barabashka.com/weather.wml
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33636026
Yura Nickolaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом темплейте:
Alex Braun
<xsl:template match="PHENOMENA">
<img src="images/weather/pheno{@cloudiness}.gif"></img><br/>

<!-- с именами картинок круто получилось! спасибо-->

<img src="images/weather/pheno{@precipitation}.gif"></img>
</xsl:template>


напиши например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:template match="PHENOMENA">
             <xsl:variable name="hour" select="ancestor::FORECAST/@hour"/>
	<img src="images/weather/pheno{@cloudiness}_{$hour}.gif"></img><br/>

          <!-- с именами картинок круто получилось! спасибо-->

 	<img src="images/weather/pheno{@precipitation}.gif"></img>
</xsl:template>
Это если продолжить идею такого формирования имени файла :)
Если хочется <xsl:if>, то идея, думаю тоже ясна
...
Рейтинг: 0 / 0
Помогите с choose в xsl
    #33636082
Alex Braun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Круто работает.
Возьмусь в плотную за изучение xml+xsl
Удачи.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с choose в xsl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]