powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите подсчитать количество одинаковых значений атрибутов
3 сообщений из 3, страница 1 из 1
Помогите подсчитать количество одинаковых значений атрибутов
    #37048562
Crudelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задание:
Попробуем вывести наш каталог нетривиальным образом: в "цвет-1" покрасьте фон компакт-дисков тех исполнителей, которые присутствуют более 10 раз в каталоге; в "цвет-2" - тех, которые присутствуют от 5 до 10 раз; в "цвет-3" - тех, которые присутствуют менее 5 раз.

xml:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="task.xsl"?>
<catalog>
<disk name="Я Так Хочу" artist="Инфинити" year="2010" image="img/1.jpg" />
<disk name="Журавли" artist="Марсель Давлетов" year="2010" image="img/2.jpg" />
<disk name="The Monster Ball Tour" artist="Lady Gaga" year="2010" image="img/3.jpg" />
<disk name="Dan Balan" artist="Crazy Loop Mix" year="2009" image="img/4.jpg" />
.............................
</catalog>

xsl:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="windows-1251"/>
<xsl:template match="/">
<body>
<xsl:apply-templates />
</body>
</xsl:template>
<xsl:template match="disk">
<div>
<xsl:choose>
<xsl:when test="count(//@artist)>5 and count(//@artist)<10">
<xsl:attribute name="style">
background-color:#02B46;
padding:10px;
margin-right:10px;
margin-bottom:10px;
float:left;
</xsl:attribute>
</xsl:when>
<xsl:when test="count(//@artist)>10">
<xsl:attribute name="style">
background-color:#565946;
padding:10px;
margin-right:10px;
margin-bottom:10px;
float:left;
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="style">
background-color:#318493;
padding:10px;
margin-right:10px;
margin-bottom:10px;
float:left;
</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<img width="250" height="250">
<xsl:attribute name="src">
<xsl:value-of select="@image" />
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="@name" />
</xsl:attribute>
</img>
<p style="padding:0;margin:0;color:#FFF">Название: <xsl:value-of select="@name" /></p>
<p style="padding:0;margin:0;color:#FFF">Исполнитель: <xsl:value-of select="@artist" /></p>
<p style="padding:0;margin:0;color:#FFF">Год издания: <xsl:value-of select="@year" /></p>
</div>
</xsl:template>
</xsl:stylesheet>

Подскажите пожалуйста что делаю не так? Как я понял count() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться.
...
Рейтинг: 0 / 0
Помогите подсчитать количество одинаковых значений атрибутов
    #37048604
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrudelisПодскажите пожалуйста что делаю не так? Как я понял count() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться.1. Выражение count(//@artist) показывает сколько всего используется атрибутов artist в документе, без учета группировки.
2. Раз надо использовать сгруппированные данные, то проще использовать <xsl:key> - пример
3. Выражение, для условия будет примерно такого вида count(key(key_artist,@artist))
...
Рейтинг: 0 / 0
Помогите подсчитать количество одинаковых значений атрибутов
    #37048632
Crudelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refregCrudelisПодскажите пожалуйста что делаю не так? Как я понял count() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться.1. Выражение count(//@artist) показывает сколько всего используется атрибутов artist в документе, без учета группировки.
2. Раз надо использовать сгруппированные данные, то проще использовать <xsl:key> - пример
3. Выражение, для условия будет примерно такого вида count(key(key_artist,@artist))

Благодарю!!! Всё работает
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите подсчитать количество одинаковых значений атрибутов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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