powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Получение суммы первыч n-элемнтов
9 сообщений из 9, страница 1 из 1
Получение суммы первыч n-элемнтов
    #36980929
musketeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, есть xml
<file>
<tasks>
<todo>
<date>01.01.2009</date>
<UserDealsRegistered>10</UserDealsRegistered>
<UserTasksCompleated>5</UserTasksCompleated>
<TotalClosedDealsTermsOver>0</TotalClosedDealsTermsOver>
</todo>

<todo>
<date>02.01.2009</date>
<UserDealsRegistered>8</UserDealsRegistered>
<UserTasksCompleated>3</UserTasksCompleated>
<TotalClosedDealsTermsOver>1</TotalClosedDealsTermsOver>
</todo>
....
....
....
</tasks>
</file>

Мне нужно построить график суммы всех UserDealsRegistered, тоесть нужны точки 10, потом сумма 10+8, потом 10+8+еще что-то, Подскажите п-ста, как получать эти суммы и сохранять их в виде 2-х точек(чтоб соеденить линией)
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36980980
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<!-- -->
	<xsl:template match="/">
		<root>
			<xsl:apply-templates select="//UserDealsRegistered"/>
		</root>
	</xsl:template>
	<!-- -->
	<xsl:template match="UserDealsRegistered">
		<point>
			<x1>
				<xsl:value-of select="sum(preceding::UserDealsRegistered)"/>
			</x1>
			<x2>
				<xsl:value-of select="sum(preceding::UserDealsRegistered | self::node())"/>
			</x2>
		</point>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36980993
musketeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, эту функцию я и искал, большое спасибо, но кое-что еще не очень понятно, мне ведь надо за один шаг получить две точки, текущую и следующую, то есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsl:for-each select="todo">
<xsl:variable name="var" select="sum(preceding::UserDealsRegistered)"/>
<xsl:variable name="var2" select="sum(preceding::UserDealsRegistered[position()+1])"/>
...
...
...
</xsl:for-each>
Чтоб с помощью svg нарисовать линию из var в var2, но var2 он не воспринимает, подскажите п-ста что тут делать
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981011
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
musketeer,

так, и было приведено две точки текущая и предыдущая...
но если уж так хочется, вот следующая точка:
Код: plaintext
<xsl:value-of select="sum(preceding::UserDealsRegistered | self::node() | following::UserDealsRegistered[1])"/>

PS. Проверку на существование точки не помешало бы...
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981019
musketeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извини за тупость, но все равно не получается, мне надо сохранять следующую точку в variable, если там написать что-то вроде
Код: plaintext
<xsl:variable name="var2" select="sum(preceding::UserDealsRegistered | self::node() | following::UserDealsRegistered[1])"/>
то не выходит, он пишет [error] Data type mismatch: found STRING where length is expected
Вот...
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981047
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
musketeer,

ты в контексте todo , мой пример в контексте UserDealsRegistered
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981053
musketeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,

Хорошо, а как тогда сделать в контексте todo?:-[
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981058
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:template match="/">
		<root>
			<xsl:for-each select="//todo">
				<xsl:variable name="var" select="sum(preceding::UserDealsRegistered | ./UserDealsRegistered)"/>
				<xsl:variable name="var2" select="sum(preceding::UserDealsRegistered | ./UserDealsRegistered | following::todo[1]/UserDealsRegistered)"/>
				<point>
					<x1>
						<xsl:value-of select="$var"/>
					</x1>
					<x2>
						<xsl:value-of select="$var2"/>
					</x2>
				</point>
			</xsl:for-each>
		</root>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Получение суммы первыч n-элемнтов
    #36981066
musketeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,

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


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