Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > XML, XSL > XSLT нумерация(помогите) |
Автор: artemtereshkov 4.2.2012, 15:25 | ||
Всем здравсвуйте. ОЧЕНЬ НУЖНА ПОМОЩЬ! Задача состоит в добавлении порядкового номера элементу elem, но идущего не в том порядке, в котором они расположены в исходном документе, а в порядке с учётом располагающихся в элементе linkGroup/link. Немного сумбурно выразился, но вот что в итоге должно получится:
Я только начинающий xstl-верстальщик и уже всю голову сломал, как именно xslt-стили записать. Буду очень рад, если кто подскажет методику или лучше фрагмет шаблона, выполняющего данную операцию. Большое спасибо за помощь) |
Автор: artemtereshkov 5.2.2012, 16:01 |
Спасибо большое, вы мне очень помогли. Код и правда далеко не для новичка. Не хочу показать назойливым, но было бы прекрасно, если бы вы дали небольшие комментарии к основным шаблонам и переменным. |
Автор: diadiavova 5.2.2012, 16:57 |
Сначала идет шаблон, копирующий все элементы документа. Поскольку он самый первый в документе и указывает на узлы не конкретно, то он имеет самый низкий приоритет и при наличии более высокоприоритеных шаблонов, срабатывают именно они. Далее идут два шаблона для элементов section/elem и link/elem соответственно. Они тоже копируются в документ, но для них устанавливается атрибут pos. Значение атрибута вычисляется немного по разному. В случае section/elem нужно подсчитать количество всех предшествующих в документе таких же элементов, прибавить к нему количество элементов, на которые ссылаются элементы link и еще единицу. Для элементов link/elem вычисляется похожим способом количество предшествующих elem и link, но только тех, которые предшествуют section/link, ссылающемуся на текущий linkGroup/link. Далее к этому числу прибавляется количество link/elem, предшествующее данному elem. Именованный шаблон linkcount рекурсивно вычисляет количество elem, на которые ссылаются все link, переданные ему как аргумент links. Параметры index и result используются для реализации рекурсивной логики. |
Автор: artemtereshkov 5.2.2012, 22:15 |
Спасибо еще раз. |