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

Код: plaintext
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.
46.
<?xml version="1.0" standalone="no" ?>

<?xml-stylesheet type="text/xsl" href="task2.xsl"?>

<Model>
<Vipusk year="1992-1993">
	<Kuzov namber="CD9A">
	</Kuzov>
</Vipusk>
<Vipusk year="1994-1995">
	<Kuzov namber="CE9A" analog="CD9A">
	</Kuzov>
</Vipusk>
<Vipusk year="1995-1996">
	<Kuzov namber="CE9A" analog="CD9A">
	</Kuzov>
</Vipusk>
<Vipusk year="1996-1997">
	<Kuzov namber="CN9A" analog="CE9A">
	</Kuzov>
</Vipusk>
<Vipusk year="1997-1999">
	<Kuzov namber="CP9A" analog="CN9A">
	</Kuzov>
</Vipusk>
<Vipusk year="1999-2001">
	<Kuzov namber="CP9A" analog="CN9A">
	</Kuzov>
</Vipusk>
<Vipusk year="2002-2003">
	<Kuzov namber="CT9A" analog="CP9A">
	</Kuzov>
</Vipusk>
<Vipusk year="2003-2005">
	<Kuzov namber="CT9A" analog="CP9A">
	</Kuzov>
</Vipusk>
<Vipusk year="2005-2006">
	<Kuzov namber="CT9A" analog="CP9A">
	</Kuzov>
</Vipusk>
<Vipusk year="2007-2010">
	<Kuzov namber="CZ4A" analog="CT9A">
	</Kuzov>
</Vipusk>
</Model>

Нужно вывести в таблицу номер кузова и количество кузовов сделанных
по его подобию
Я пробовал сделать так:

Код: plaintext
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.
 
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="namber" match="//Vipusk/Kuzov" use="@namber"/>
<xsl:template match="/">                                    
<html>
<head>
 <title> Task  2  </title>
</head>
	<body>
	  <table border="2">
	        <tr bgcolor="#d8a8f0">
			<td> ID Kuzovs </td>
			<td> Count </td>
		</tr>

			<xsl:for-each select="//Vipusk/Kuzov[generate-id()=generate-id(key('namber',@namber))]"> 
		<tr>
			<td>
				<p align="center">
        				<xsl:value-of select="@namber"/>
				</p>	
		        </td>
		 	<td>
			<xsl:variable name="p_id" select="@namber"/>
			<xsl:for-each select="//Kuzov[@analog=$p_id]">
			<xsl:value-of select="count(@analog)"/>
			<xsl:text>  </xsl:text>
			</xsl:for-each>       
	 		</td>   
		</tr>
			</xsl:for-each> 
	  </table>
	</body>
</html>
</xsl:template>
</xsl:stylesheet>

Но тогда count считает количества для каждого кузова отдельно, и выводит подряд.
Помогите исправить
...
Рейтинг: 0 / 0
Помогите посчитать количество
    #37132961
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gambit_d.s,

Выбирай, что те подойдет . Первая строка - преобразованный твой вариант
Код: plaintext
1.
2.
3.
<xsl:value-of select="count(//Kuzov[@analog=current()/@namber])"/>
<xsl:value-of select="count(key('namber',@analog))"/>
<xsl:value-of select="count(key('namber',@namber))"/>
<xsl:value-of select="count(//Kuzov[@namber=current()/@analog])"/>

Вообще, задача толком не ясна. У CZ4A аналог CT9A; у CT9A аналог CP9A. Вопрос - является ли CP9A аналогом CZ4A... Если, ни одна строчка не подойдет, нарисуй - какой должен быть результат.
...
Рейтинг: 0 / 0
Помогите посчитать количество
    #37133036
Gambit_d.s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,

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


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