Эту задачу гораздо проще выполнить с помощью JavaScript вместо XSLT только потому, что конечная грамматика не связана с XML, и потому что маловероятно, что вы преобразуете что-либо, кроме простого синтаксиса.
Вы только трансформируете синтаксис и ничего не связаны с данными, тогда это только синтаксический перевод. Это не то, для чего был разработан XSLT. Каждая технология XML имеет общий синтаксис, поэтому синтаксические преобразования не являются проблемой при формировании данных из одной грамматики XML в другую. Кроме того, это простая задача.
Вам нужно следующее:
Строковый литерал, представляющий код JS массива или индекс литерала объекта до элемента данных, элемент данных с использованием innerHTML массива document.getElementsByTagName, а затем бит JS для завершения кода индекса массива или литерала объекта. Используйте цикл, чтобы пройти через каждый элемент из XML и встроить его в строковый литерал, представляющий необходимый код JS для построения каждого индекса вашего объекта JSON. Затем после завершения прикрепите соответствующее начало и конец к тому, что динамически создается, чтобы закончить синтаксис. Это должен быть очень быстрый процесс.