Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Не могу сделать подитог (группировка) / 9 сообщений из 9, страница 1 из 1
06.05.2008, 17:41
    #35297748
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
Привет всем.
Наверно уже достаю своими чайниковскими вопросами по XSLT :(...
Тока учусь, не бейте, искал в интернете, может не допонимаю, или делаю что-то не так, помогите, подскажите если есть возможность... ;)
Есть XML:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?xml  version="1.0"?>
<root>
	<Tbl ID= 10  Fld="TestA" FldSum="20"/>
	<Tbl ID= 10  Fld="TestA" FldSum="10"/>
	<Tbl ID= 13  Fld="TestB" FldSum="5"/>
	<Tbl ID= 13  Fld="TestB" FldSum="110"/>
	<Tbl ID= 14  Fld="TestC" FldSum="20"/>
</root>
Надо создать XSL, чтобы данные выходили в HTML в таком виде:
ID Fld FldSum10 TestA 2010 TestA 10 _ SubTotal 3013 TestB 513 TestB 110 _ SubTotal 11514 TestC 20 _ SubTotal 20 _ TOTAL 330
Заранее благодарю за любую помощь!
...
Рейтинг: 0 / 0
06.05.2008, 17:49
    #35297776
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
http://xmlhack.ru/books/xslt/ch_11.html

С уважением, Vasilisk
...
Рейтинг: 0 / 0
06.05.2008, 18:31
    #35297879
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
Что-то этот пример не могу для своего случая преобразовать, если у кого есть желание и время помогите плз
...
Рейтинг: 0 / 0
07.05.2008, 00:23
    #35298347
ibnTeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
Быстрее и проще сделать с применением <xsl:key>:

Код: 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.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="ID" match="Tbl" use="@ID"/>

<xsl:template match="/root">
<table>
<tr>
<th>ID</th>
<th>Fld</th>
<th>FldSum</th>
</tr>
<xsl:for-each select="Tbl">
<tr>
<td><xsl:value-of select="@ID"/></td>
<td><xsl:value-of select="@Fld"/></td>
<td><xsl:value-of select="@FldSum"/></td>
</tr>
<xsl:if test="not(following-sibling::Tbl[1]) or following-sibling::Tbl[1]/@ID!=current()/@ID">
<tr>
<td>-</td>
<td>SubTotal</td>
<td><xsl:value-of select="sum(key('ID', current()/@ID)/@FldSum)"/></td>
</tr>
</xsl:if>
</xsl:for-each>
<tr>
<td>-</td>
<td>TOTAL</td>
<td><xsl:value-of select="sum(Tbl/@FldSum)"/></td>
</tr>
</table>
</xsl:template>

</xsl:stylesheet>

P.S. С вашей стороны некрасиво выкладывать невалидный XML, я ведь не пожалел времени на проверку кода, и мне пришлось у ваших ID=10 ставить кавычки. И непонятно что у вас за TOTAL, как я понял правильно будет сумма данных Tbl/@FldSum, и в данном примере она равна 165, а не 330.
...
Рейтинг: 0 / 0
07.05.2008, 17:55
    #35300653
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
Большоооооооооооооооеее спасибо!
Супер! Если я чем-то могу помочь, без проблем! ;)
НЕвалидный потому что, я это просто сходу писал, так получилось, сорри за это ;)
На самом деле у меня XML гораздо больше, не стал все выкладывать, обощенно описал проблему... ;)
МОжно ли так сделать:
Есть еще дополнительное поле Status, можно ли так сделать, ммм... скажем суммирование всех значение Fld у которых Status равен 0
Еще раз спасибо за помощь!
...
Рейтинг: 0 / 0
07.05.2008, 18:28
    #35300761
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
Сделал здесь:
Код: plaintext
<xsl:key name="ID" match="Tbl[@Status_ID[.=0]]" use="@ID"/>
но у меня еще может быть несколько условий, т.е. если значение Status 0 или 1, к примеру
вот это не могу сделать, может кто знает?
...
Рейтинг: 0 / 0
08.05.2008, 08:02
    #35301333
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
up
...
Рейтинг: 0 / 0
08.05.2008, 14:10
    #35302500
Volder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
orunbekСделал здесь:
Код: plaintext
<xsl:key name="ID" match="Tbl[@Status_ID[.=0]]" use="@ID"/>
но у меня еще может быть несколько условий, т.е. если значение Status 0 или 1, к примеру
вот это не могу сделать, может кто знает?а что не получается-то?
Код: plaintext
<xsl:key name="ID" match="Tbl[@Status_ID=0 or @Status_ID=1]" use="@ID"/>
...
Рейтинг: 0 / 0
08.05.2008, 18:01
    #35303248
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу сделать подитог (группировка)
(((((((((((
аж плакать хочется
все так просто, а я какие тока варианты не перепробовал.... ;)
спасибо большое за подсказку
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Не могу сделать подитог (группировка) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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