Как заставить процессор Saxon XSLT сообщать об ошибках в stderr или log4j?

#java #xml #xslt #saxon

#java #xml #xslt #saxon

Вопрос:

Это мой код:

 import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;

TransformerFactory factory = TransformerFactory.newInstance();
factory.setErrorListener(new MyErrorListener());
Transformer trans = factory.newTransformer(new StreamSource(new StringReader(xsl), sid));
t.setErrorListener(new MyErrorListener());
t.transform(new DOMSource(xml), result);
  

Как я могу изменить этот код, чтобы заставить Saxon 9 сообщать об ошибках в stderr? Теперь он молчит, несмотря ни на что, и выдает только исключения типа TransformerConfigurationException или TransformerException очень мало сообщает MyErrorListener .

Ответ №1:

Вы говорите об ошибках во время компиляции или об ошибках во время выполнения? Для ошибок времени компиляции (которые встречаются чаще) вам необходимо установить ErrorListener на TransformerFactory, а не на transformer.

Было бы лучше, если бы вы привели конкретный пример.

Комментарии:

1. В приведенном выше примере я устанавливаю ErrorListener заводскую настройку, но я все еще ничего не вижу в журнале. Да, я говорю об ошибках компиляции. (Кстати, Saxon потрясающий, спасибо за это!)