Вы не очень четко сказали, какой выход вы хотите, и вы не очень ясно сказали, какой выход вы получаете. Вы также не сказали нам, как вы выполняете преобразование (какой XSLT-процессор и как он вызывается).
Код написан правильно. Немного странно, что вы группируете, а затем не производите никакого вывода, который делает сгруппированную структуру видимой, но, возможно, это то, что вам нужно.
Вы говорите, что получаете сообщение об ошибке. Вы только сообщили нам о сводном сообщении, в котором говорится, что оно не удалось: где-то будут подробные сообщения, в которых сообщается, почему это не удалось. Если вы не видите эти сообщения, вам нужно сообщить нам, какой процессор вы используете и как, чтобы мы могли сообщить вам, где их найти.
Распространенной ошибкой считается, что вы используете процессор XSLT 2.0, когда у вас его нет. Некоторые люди думают, что все, что вам нужно сделать, это поместить "version = '2.0'" в начало таблицы стилей. Но если вы отправите таблицу стилей с надписью "version = '2.0'" процессору, который был написан в 2001 году и понимает только 1.0, он не будет обращать на это никакого внимания.