Я бы порекомендовал раскошелиться на вызов "xsltproc", который поставляется с библиотеками libxslt в linux и выполняет всю работу.
Или, если вы случайно используете JRuby, у вас есть несколько парсеров xslt для java, которые вы действительно можете легко использовать из вашей программы ruby.