Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / сквозной XSL count() / 13 сообщений из 13, страница 1 из 1
09.04.2014, 18:04
    #38610339
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
Добрый день!
Есть вот такое преобразование
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xsl:for-each select="/collection/cd">
 <xsl:if test="genre/@name='jazz'">
  <div>
   <xsl:value-of select="@artist"/>
   <xsl:text> — </xsl:text>
   <xsl:value-of select="count(genre[@name='pop']/)"/>
  </div>
 </xsl:if>
</xsl:for-each>



Всё хорошо, работает, но нужно чтобы на выходе было не так
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html><body>
<div>Стас Михайлов — 6</div>
<div>Поющие трусы — 5</div>
<div>Жанна Фриске — 4</div>
<div>Стас Михайлов — 5</div>
<div>Группа Губы — 4</div>
<div>Филипп Киркоров — 4</div>
<div>Жанна Фриске — 3</div>
</body></html>



а вот так
Код: html
1.
2.
3.
4.
5.
6.
7.
<html><body>
<div>Стас Михайлов*—*11</div>
<div>Поющие трусы*—*5</div>
<div>Жанна Фриске*—*7</div>
<div>Группа Губы*—*4</div>
<div>Филипп Киркоров*—*4</div>
</body></html>



Или такое лучше через apply-templates делать?
...
Рейтинг: 0 / 0
09.04.2014, 18:11
    #38610350
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
coliator,

Пример XML покажите, а то возникают всякие разные вопросы
...
Рейтинг: 0 / 0
09.04.2014, 18:27
    #38610370
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
_Vasilisk_,
Вобщем-то не суть важно что за данные, но структура такова
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="222.xsl" type="text/xsl"?>
<collection>
	<cd name="Стас Михайлов">
		<genre name="pop">
			<track name="AAA"/>
			<track name="BBB"/>
			<track name="CCC"/>
			<track name="DDD"/>
			<track name="EEE"/>
			<track name="FFF"/>
		</genre>
		<genre name="ska">
			<track name="AAAA"/>
			<track name="BBBB"/>
		</genre>
		<genre name="jazz">
			<track name="AA"/>
			<track name="BB"/>
		</genre>
		<genre name="classic">
			<track name="JJJ"/>
			<track name="LLL"/>
		</genre>
	</cd>
	<cd name="Жанна Фриске">
		<genre name="pop">
			<track name="KKK"/>
			<track name="PPP"/>
			<track name="GGG"/>
			<track name="HHH"/>
			<track name="YYY"/>
		</genre>
		<genre name="classic">
			<track name="TTT"/>
			<track name="III"/>
		</genre>
		<genre name="jazz">
			<track name="WWW"/>
		</genre>
		<genre name="ska">
			<track name="SSS"/>
		</genre>
	</cd>
</collection>
...
Рейтинг: 0 / 0
10.04.2014, 01:13
    #38610609
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
coliator,

И, что нужно подсчитать?
...
Рейтинг: 0 / 0
10.04.2014, 02:34
    #38610624
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
coliatorИли такое лучше через apply-templates делать?


ДА.
...
Рейтинг: 0 / 0
10.04.2014, 10:37
    #38610833
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
_Vasilisk_,
Вывести количество треков в жанре "поп" по каждому исполнителю. При этом на выходе названия исполнителей повторяться не должны (то есть кол-во треков у одного повторяющегося по всему XML исполнителю должно суммироваться). Вангую что это делается XPath'ом и apply-templates'ом, но вот как - не могу сообразить.
...
Рейтинг: 0 / 0
10.04.2014, 14:28
    #38611258
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
coliator,

приведённый xslt никак не подходит к приведённому xml. Так что уточни либо то, либо другое.
Неужто пихайлов исполняет и джаз, и классику?
Если xml правильный, то не понятно, что нужно посчитать: каждый исполнитель в одном экземпляре, достаточно просто вывести количество попсовых песен.
...
Рейтинг: 0 / 0
10.04.2014, 16:09
    #38611453
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
petalvik,
не хотел я светить в инете учебный материал, ну да ладно.. сделаю хотя бы так (надеюсь это не противоречит правилам форума):
вот XML http://pastebin.com/J97cTCGX
вот мой XSLT http://pastebin.com/QKP2B8B8 , который дает вот такой вывод
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html><body>
<div>Карусель — 6</div>
<div>Пятёрочка — 5</div>
<div>Лента — 4</div>
<div>Карусель — 5</div>
<div>Метро — 4</div>
<div>ОКей — 4</div>
<div>Лента — 3</div>
</body></html>


а мне надо вот такой
Код: html
1.
2.
3.
4.
5.
6.
7.
<html><body>
<div>Карусель — 11</div>
<div>Пятёрочка — 5</div>
<div>Лента — 7</div>
<div>Метро — 4</div>
<div>ОКей — 4</div>
</body></html>
...
Рейтинг: 0 / 0
10.04.2014, 17:34
    #38611597
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<xsl:template match="/shops">
  <html>
    <body>
      <xsl:apply-templates match="shop"/>
    </body>
  </html>
</xsl:template>

<xsl:template match="shop">
  <xsl:if test="not(preceding-sibling::shop[@name = current()/@name])">
    <div>
      <xsl:value-of select="concat(@name, ' - ', count(../shop[@name = current()/@name]/department[@name= '...']/product))"
    </div>
  </xsl:if>
</xsl:template>
...
Рейтинг: 0 / 0
11.04.2014, 15:28
    #38612494
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
_Vasilisk_,

где-то на синтаксис ругается в самой длинной строке, пока не могу понять где, но мне кажется кавычек где-то не хватает
...
Рейтинг: 0 / 0
11.04.2014, 15:37
    #38612508
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
/product))"

тег не закрыт же
...
Рейтинг: 0 / 0
11.04.2014, 15:48
    #38612522
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
Antonariy,

точно)))
...
Рейтинг: 0 / 0
11.04.2014, 16:00
    #38612537
coliator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сквозной XSL count()
_Vasilisk_,

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


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