Перейти к содержимому

Фотография
- - - - -

Задача XML/XSLT


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 nunoob

nunoob

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 06 Февраль 2012 в 02:34

Здравствуйте.
Помогите пожалуйста разобраться и дайте указание, в сторону чего курить маны, т.к. уже целый день сижу и никак не могу сделать элементарную, казалось бы, вещь.
Итак задача:
Есть исходный XML (он значительно больше, но я немного сократил, сути это не меняет):
<list>
<section>
<elem id="el-0001"/>
<elem id="el-0002"/>
<linkRef id="ln-0001"/>
</section>
<section>
<elem id="el-0003"/>
<linkRef id="ln-0002"/>
<elem id="el-0004"/>
</section>
<linkGroup>
<link id="ln-0001">
<elem id="el-0005"/>
<elem id="el-0006"/>
</link>
<link id="ln-0002">
<elem id="el-0007"/>
<elem id="el-0008"/>
<elem id="el-0009"/>
</link>
</linkGroup>
</list>

Задача состоит в добавлении порядкового номера элементу elem, но идущего не в том порядке, в котором они расположены в исходном документе, а в порядке с учётом располагающихся в элементе linkGroup/link.

Немного сумбурно выразился, но вот что в итоге должно получится:
<list>
<section>
<elem pos="1" id="el-0001"/>
<elem pos="2" id="el-0002"/>
<linkRef id="ln-0001"/> /* тут обращаемся в linkGroup/link по id="ln-0001" и нумеруем распологающиеся там elem, затем уже обратно */
</section>
<section>
<elem pos="5" id="el-0003"/> /* тут продолжаем нумерацию, после номера в link id="ln-0001" */
<linkRef id="ln-0002"/> /* тут опять нумеруем элементы сначала в linkGroup/link id="ln-0002", а затем продолжаем здесь нумеровать */
<elem pos="9" id="el-0004"/>
</section>
<linkGroup>
<link id="ln-0001">
<elem pos="3" id="el-0005"/>
<elem pos="4" id="el-0006"/>
</link>
<link id="ln-0002">
<elem pos="6" id="el-0007"/>
<elem pos="7" id="el-0008"/>
<elem pos="8" id="el-0009"/>
</link>
</linkGroup>
</list>

Я только начинающий xstl-верстальщик и уже всю голову сломал, как именно xslt-стили записать.
Буду очень рад, если кто подскажет методику или лучше фрагмет шаблона, выполняющего данную операцию.

Большое спасибо за помощь)


Точно такая же проблема. Если можно, подскажите как ее решить.
Автор выразился немного непонятно, я поясню:
Каждому элементу <elem> в исходном коде надо присвоит атрибут, затем отсортировать его, но с учетом не исходного положения, а окончательного, где элементы <link> встанут на место элементов <linkRef> с аналогичным @id. При этом структура XML документа не должна нарушиться.

Сообщение отредактировал nunoob: 06 Февраль 2012 в 02:49

  • 0

Спонсор

#2 Medwoodu

Medwoodu

    Злобный модер

  • суперМодератор
  • 357
    1 418 сообщ.

Отправлено 06 Февраль 2012 в 11:22

извините, я сейчас переключаться не буду, но решается из темплейта(section /linkref) обращаетесь в темплейт с линкреф id и в общем все. Разбейте на два шаблона и используйте переменную для id
  • 1

#3 nunoob

nunoob

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 06 Февраль 2012 в 15:33

Спасибо, попробую.
  • 0



Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение
Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей