Xalan - TransformerHandler для подключения к событиям трансформации
Мне нужно подключиться к триггерам событий во время трансформации Xalan.
Т.е. когда узел найден, когда обрабатывается его строковое содержимое, в основном методы startElement(), endElement(), characters() и т. Д.
Я создал экземпляр TransformerHandler, но изо всех сил пытаюсь увидеть, как добавить это в Transformer...
У кого-нибудь есть пример того, как я могу это сделать.
Я рылся в сети, но ничего не могу найти - может, я просто искал не ту вещь...
Большое спасибо
1 ответ
Мониторинг событий XML SAX не предоставит необходимую информацию, согласно добавленному вами комментарию:
Вывод будет HTML на основе входного XML. Мне нужно отслеживать размер выводимого текста. Например, когда я нажимаю 10k, мне нужно вызвать событие. Мне также нужно знать, на каком узле я на данный момент.
В зависимости от сложности таблицы стилей преобразователю может потребоваться загрузить весь XML-файл в память, например дерево DOM, перед началом обработки.
Вам понадобится 2 крючка:
- Определить, когда 10k выходных было сгенерировано.
- Отслеживайте, какая часть таблицы стилей XSLT обрабатывается в данный момент.
Для #1 единственное место, где вы будете знать размер вывода, находится в потоке вывода, поэтому вам придется обернуть FileOutputStream
будет поток, который контролирует размер.
Для #2 вы можете сделать это, используя TraceListener
, мониторинг SelectionEvent
, Я никогда не использовал это, но это звучит как то, что вы ищете.