Задача XML/XSLT

Статус
Закрыто для дальнейших ответов.

nunoob

Новичок
Регистрация
05.02.2012
Сообщения
2
Здравствуйте.
Помогите пожалуйста разобраться и дайте указание, в сторону чего курить маны, т.к. уже целый день сижу и никак не могу сделать элементарную, казалось бы, вещь.
Итак задача:
Есть исходный 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 документа не должна нарушиться.
 

medwoodu

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

nunoob

Новичок
Регистрация
05.02.2012
Сообщения
2
Спасибо, попробую.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ