![]() |
|
Модераторы: diadiavova |
![]()
|
|
| pawlenty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
<data>
<item id="i1" sector="s1" subsector="u1">561</item> .................. <пункты могуть быть с различными комбинациями s и u> .................. <item id="i251" sector="s2" subsector="u2">632</item> <item id="i252" sector="s2" subsector="u3">980</item> <item id="i253" sector="s1" subsector="u4">689</item> <item id="i254" sector="s2" subsector="u5">641</item> <item id="i255" sector="s4" subsector="u4">314</item> <sector id="s1">Sector 1</sector> <sector id="s2">Sector 2</sector> <sector id="s3">Sector 3</sector> <subsector id="u1">Subsector 1</subsector> <subsector id="u2">Subsector 2</subsector> <subsector id="u3">Subsector 3</subsector> <subsector id="u4">Subsector 4</subsector> <subsector id="u5">Subsector 5</subsector> </data> нужно вывести так: Sector 1 Subsector 1 idValue Value и. т. д. все это просто делается тремя вложеными циклами for-each, НО!!! Нужно еще вставить разделители страниц! Должно быть не более 25 item-ов (idValue Value) на странице, а разделители страниц можно вставлять только между (Sector/Subsector, внутри Subsector - нельзя). Понятно, что нужно считать колличество (idValue Value) каждого Subsector и складывать с предудущим, чтобы проверить. Но "силами" xsl не могу никак сделать. Пробовал и с рекурсией мутить, но я с XSL только 2ой разбираюсь, может кто подскажет хотя бы идею... |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 7 Всего: 110 |
ну, во-первых, переходим на рекурсивный обход всех комбинаций sector/subsector
для этого делаем шаблон с двумя параметрами: порядковый номер sector's и порядковый номер subsector'a при каждом вызове выводим соответствующий список item потом вызываем этот же шаблон, увеличивая номер subsector если доходим до конца - сбрасываем subsector и увеличиваем sector когда мы выводим элементы первый раз для этого sector, также выводим его заголовок кроме того, после каждого вывода блока item обновляем счётчик строк (он передаётся в качестве параметра), и в зависимости от него ставим разделитель (я ставил <hr/>)
-------------------- qqq |
|||
|
||||
| pawlenty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Ух ты!!! Вообще суппер!!! Мощная вещь рекурсия, только вот заметил еще один подвох. У меня есть items
<item id="i201" sector="s5" subsector="u6">314</item>, а в полях <sector> нет s5, и нет u6 в <subsector> - то есть такие поля нужно перепрыгивать |
|||
|
||||
| pawlenty |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Все!!! Большое спасибо - сам разобрался
|
|||
|
||||
![]()
|
| Правила форума "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. |