![]() |
|
Модераторы: diadiavova |
![]()
|
|
| Veivan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Подскажите плиз способ обработки.
Требуется выдать содержимое XML в HTML с помощью XSLT. Кажется, это называется кросстаб. Список надо развернуть в одну строку, сгруппировав по ID. Надо подвести итоги по каждому тэгу Block и вцелом по Report, просуммировав данные из Resurs . Каждый Resurs имеет уникальный res_id. Хочется итоги видеть примерно так: Resurs1 | Resurs 2 |... |Resurs N Block1 S_money1 | S_money2 |...|S_moneyN Block2 S_money1 | S_money2 |...|S_moneyN Report S_money1 | S_money2 |...|S_moneyN XSLT изучаю недавно. Пытался использовать key, но что-то не выходит :-(
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
А можно увидеть документ, который получить надо из этого? Я, например, описания "на пальцах" не понял.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Veivan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Приложил желаемый результат.
Это HTML. Я изменил расширение, потому что сайт ругнулся. В HTM приведены не все строчки, поэтому итоги не совпадают, но суть кажется ясна. Присоединённый файл ( Кол-во скачиваний: 6 )
Report.txt 10,39 Kb |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Честно говоря: всё равно не понял что откуда берётся и куда девается.
Тогда давай начнём с конца А хтмл-код можно так же как и хмл прямо в топик вписывать, там много типов подсветки, для хтмл тоже есть. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Veivan |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Попробую сформулировать по-другому.
Есть XML:
Из него надо получить HTML:
Нужно просуммировать животин с разделением по виду, сгруппировав по стаду и вцелом по колхозу. Как сформировать HTML - понятно. Вопрос состоит в следующем: как осуществить суммирование "по стаду" и "по кохозу"? На SQL c помощью такие вещи делаются с пом GROUP BY. XSLT вроде предназначен для работы с иерархиями, но я не обнаружил походящего механизма. Либо чё то не понимаю. Работу я собираюсь делать сам, без фриланса. Хочется освоить XSLT, поэтому буду рад идеям. Жалко если не получится на XSLT, тогда придётся оставить на SQL. |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Суммирование производится при помощи XPath-функции sum. То есть тебе надо написать XPath-выражение, которое будет возвращать нужную тебе группу узлов и передать этой функции.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Veivan |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Спасибо за помощь.
Функция Sum это хорошо и правльно. Но как её параметризовать? Нельзе же в код написать
Если понадобится сортировка, то как быть? Посмотрите плиз XML и XSL
Видите в коде - названия колонок сортируются, но их значения будут выдаваться в одном порядке, зашитом в коде.
По опыту - здесь надо делать цикл по @res_id, подавая @res_id в требуемом порядке, Вот только как это изобразить на XSLT - непонятно. |
||||||||
|
|||||||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Ну а как должно быть? Область видимости элемента sort ограничена тем родительским элементом, в котором он определён(в данном случае фор-ич). Для значений нужен либо собственный сорт либо определить их другим способом. Я детально код не изучал, так что если что не понял - поправь. Элемент сорт может быть дочерним по отношению к apply-tamplate(если надо ессно). -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Veivan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Приведя код, я хотел показать, что названия колонок можно сортировать,
а их значение нельзя, так как это зашито в коде.
Да дело не только в сортировке. Например, когда неизвестно заранее число видов ресурсов(я писал - овец, коз, коров), то сколько строк для суммирования надо записать? Есть ли способ педставить это в цикле по числу уникальных @res_id? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Функции Distinct в XSLT/XPath нет, но её можно реализовать следуя примерно такой логике:
Это сообщение отредактировал(а) diadiavova - 30.1.2010, 21:15 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Veivan |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Спасибо уважаемый diadiavova.
С Вашей помощью я сваял то что хотел-цикл.
Теперь можно установить любой порядок сортировки, также не нужно менять XSL при изменении входных данных(числа ресурсов) в XML. Если любопытно, вот XML
А вот XSL для него:
|
||||||
|
|||||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Не совсем понятно где тут то, о чём я написал, ну да ладно -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |