Ответ 1
Существует несколько способов сделать это (в порядке приоритета поиска):
Прямое мгновение
Явным образом создайте экземпляр Saxon factory (с комментарием Майкла выше):
TransformerFactory fact = new net.sf.saxon.TransformerFactoryImpl()
Укажите имя класса
Задайте класс factory при его создании:
TransformerFactory fact = TransformerFactory.newInstance(
"net.sf.saxon.TransformerFactoryImpl", null);
Примечание: доступен с Java 6. версия Java 5 не имеет этого метода.
Использовать системное свойство
Задайте системное свойство javax.xml.transform.TransformerFactory
перед созданием экземпляра:
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
Или в командной строке (строка для чтения):
java -Djavax.xml.transform.TransformerFactory=
cnet.sf.saxon.TransformerFactoryImpl YourApp
Использовать файл свойств
Создайте следующий файл:
JRE/lib/jaxp.properties
Со следующим содержимым:
javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
Сервисный погрузчик
Создайте следующий файл в любом JAR на CLASSPATH:
META-INF/services/javax.xml.transform.TransformerFactory
Со следующим содержимым:
net.sf.saxon.TransformerFactoryImpl
Платформа по умолчанию
Если ни одно из указанных выше не выполнено, будет загружен экземпляр по умолчанию TransformerFactory
платформы. Дружественное описание этого слоя плагинов можно найти здесь.
Я бы счел этот ответ аргументом против Java-способа делать что-то.