|
Помогите подсчитать количество одинаковых значений атрибутов
|
|||
---|---|---|---|
#18+
Есть задание: Попробуем вывести наш каталог нетривиальным образом: в "цвет-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() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 17:38 |
|
Помогите подсчитать количество одинаковых значений атрибутов
|
|||
---|---|---|---|
#18+
CrudelisПодскажите пожалуйста что делаю не так? Как я понял count() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться.1. Выражение count(//@artist) показывает сколько всего используется атрибутов artist в документе, без учета группировки. 2. Раз надо использовать сгруппированные данные, то проще использовать <xsl:key> - пример 3. Выражение, для условия будет примерно такого вида count(key(key_artist,@artist)) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 18:25 |
|
Помогите подсчитать количество одинаковых значений атрибутов
|
|||
---|---|---|---|
#18+
refregCrudelisПодскажите пожалуйста что делаю не так? Как я понял count() считает количество атрибутов, как мне посчитать количество одинаковых исполнителей не могу разобраться.1. Выражение count(//@artist) показывает сколько всего используется атрибутов artist в документе, без учета группировки. 2. Раз надо использовать сгруппированные данные, то проще использовать <xsl:key> - пример 3. Выражение, для условия будет примерно такого вида count(key(key_artist,@artist)) Благодарю!!! Всё работает ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:03 |
|
|
start [/forum/topic.php?fid=14&msg=37048604&tid=1333037]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 159ms |
0 / 0 |