Всякий раз, когда я вижу такой XML-документ, мой первый импульс - заставить человека, который его создал, выполнять свою работу. Серьезно, это 2010 год. Давно уже пора ожидать, что если вам потребуется создавать XML, это означает, что вы создаете пригодный для использования XML, а не данные в своем личном формате seekrit, в которые были обернуты теги. Излучать подобные вещи лениво и презрительно.
Конечно, не всегда возможно заставить людей вести себя как ответственные профессионалы. Мой второй подход заключается в предварительной обработке XML и восстановлении его до того, как он попадет в XSLT или в любой другой код, который ожидает рационально сконструированный XML. Это избавляет меня от необходимости выяснять, как заставить XSLT делать то, что никогда не было разработано. Это также означает, что любой не-XSLT-код, который обрабатывает эти данные в нисходящем направлении, может быть проще.