Вы должны больше думать о том, что выбирает каждый шаблон и какой выход вы хотите получить от этого. Не беспокойтесь о разработке пути выполнения. Пусть XSLT позаботится об этом за вас.
Подумайте о структуре вашего документа и о том, как вы хотите структурировать вывод. Затем начните с корня и создайте шаблоны, которые постепенно выбирают место, где вы хотите создать вывод. Полезно использовать промежуточные шаблоны, у которых нет вывода, чтобы выяснить, что вы выбираете и почему.
Избегайте "для каждого". Это только заставит вас думать, что вы работаете в процедурной области.