Посмотрите на SAX, который позволяет вам видеть каждую отдельную часть XML-документа, когда они проходят. Затем вы можете выполнять действия с текстовыми узлами и выполнять необходимые манипуляции.
Проблема с XSLT состоит в том, что большинству реализаций требуется все дерево ввода в памяти, которое обычно в 10 раз больше размера на диске. Я знаю только коммерческое издание Saxon XSLT трансформатора, который может выполнять потоковую передачу XSLT (но это идеально подходит для ваших нужд).