XSL преобразование больших XMLS - PullRequest
2 голосов
/ 19 января 2011

Мне известны способы применения XSL-преобразования к XML в java с использованием

javax.xml.transform.Transformer

Этот подход хорошо работает для небольших данных XML. Но когда дело доходит до больших данных XML, где подход на основе DOM трудно использовать из-за ограничений памяти, это становится кошмаром.

Я хочу знать, каков наилучший подход для применения XSL-преобразования к большим XML-файлам. Есть ли какой-нибудь трансформатор, работающий на SAX, а не на DOM?

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Существуют различные реализации процессоров XSLT в Java, которые реализуют JAXP.Saxon 9.3 - это процессор XSLT 2.0, который также реализует некоторые функции потоковой передачи рабочего проекта XSLT 3.0, см. http://www.saxonica.com/documentation/sourcedocs/streaming.xml. И даже если вы не используете последние экспериментальные функции Saxon 9.3, обычно хорошей идеей является не кормитьDOMSource для вашего процессора, но пусть процессор использует свою собственную реализацию дерева, передавая StreamSource.

2 голосов
/ 19 января 2011

Если вы работаете с огромным XSLT и / или работаете с несколькими XSLT, то компиляция и кэширование xslt - хороший вариант для повышения производительности.В этой статье объясняется, как кэшировать xslt

...