Давайте попробуем разобраться, используете ли вы XSLT 1.0 или XSLT 2.0. Вы говорите, что используете XSLT 2.0, но также говорите, что в JDK используется механизм XSLT по умолчанию, который поддерживает только XSLT 1.0.
Этот вопрос актуален, поскольку XSLT 1.0 позволяет механизму преобразования (фактически, сериализатору) выбирать, какие префиксы будут использоваться в выходных данных, тогда как XSLT 2.0 предписывает выбор префиксов (за исключением редких случаев, когда процессор должен придумать префикс из ниоткуда).
Таким образом, ответ таков: если вы используете движок XSLT 1.0, как кажется, то языковая спецификация не дает никаких гарантий относительно префиксов пространства имен в выходных данных, хотя на практике большинство процессоров будут делать разумные вещи в простых случаях. Если вы хотите получить гарантию, вам нужно перейти на процессор XSLT 2.0.