получить предшествующий брат относительно набора узлов - PullRequest
0 голосов
/ 12 августа 2010

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

A
Abe
Amel
Andrew
B
Bobby
Benny
...

Ось предыдущего брата относится к документу, а не к набору узлов.Что я могу сделать?

1 Ответ

0 голосов
/ 09 октября 2010

То, что вы описали здесь, является проблемой группировки. Стандартным способом обработки группировки в xslt 1 является метод "Muenchian". Здесь есть очень подробное объяснение: http://www.jenitennison.com/xslt/grouping/muenchian.html

Основная идея заключается в том, что вы создаете ключ, который указывает, что вы хотите сгруппировать по. В этом случае вы создадите ключ, соответствующий узлу человека, используя первую букву его имени.

Затем вы пишете цикл, который проходит по людям и проверяет, является ли каждый из них первым, который соответствует данному ключу (первая буква). Если это так, то вы вставляете один из своих группирующих разделителей.

Тогда у вас есть вложенный цикл (или apply-templates), у которого есть правило соответствия, которое выбирает только узлы с этой первой буквой. Вы можете отсортировать их, используя xslt: sort, и вывести их.

Если вы можете опубликовать образец вашего фактического XML (а не только желаемый вывод), то я могу написать вам пример таблицы стилей для его анализа.

...