Запуск скомпилированной таблицы стилей Saxon с использованием JAXP API

У меня есть скомпилированная таблица стилей, созданная с помощью этой команды Saxon:

java net.sf.saxon.Compile [опции] вывод таблицы стилей [ параметры…]

Теперь я хотел бы применить эту таблицу стилей к дереву XML в моем коде Java. Можно ли это сделать с помощью JAXP API, и если да, то как именно? Заранее большое спасибо за любую помощь в этом.


person user1919235    schedule 20.12.2012    source источник
comment
Что говорит об этом документация Saxon на saxonica.com?   -  person C. M. Sperberg-McQueen    schedule 20.12.2012
comment
Лучшее место, где можно задать саксонский вопрос, — saxonica.plan.io. Мы следим за этим форумом, и на каждый вопрос мы получим ответ от Saxonica. Получаете ли вы ответ здесь, это случайность.   -  person Michael Kay    schedule 21.12.2012
comment
OK; спасибо за упоминание saxonica.plan.io.   -  person user1919235    schedule 21.12.2012


Ответы (1)


Во-первых, обратите внимание, что это средство не всегда делает то, что хотят люди. Есть много ограничений — вещи, которые вы можете делать в своей таблице стилей, препятствующие ее компиляции. И у многих людей есть ожидания в отношении производительности, которые не оправдываются при использовании этой функции. Поэтому в Saxon 9.4 мы полностью убрали его.

При запуске скомпилированной таблицы стилей самым большим ограничением является то, что она не может использовать конфигурацию ни с чем другим — она должна работать автономно. Это следствие того, как работает NamePool. Поэтому, если вы попытаетесь сделать это с помощью Java API, вы должны сделать это правильно.

Ключом к загрузке скомпилированной таблицы стилей является статический метод.

PreparedStylesheet.loadCompiledStylesheet()

Это невозможно сделать с помощью интерфейсов JAXP. Однако он возвращает объект PreparedStylesheet, который является реализацией Saxon объекта JAXP Templates, и как только вы его получите, вы можете использовать интерфейсы JAXP для создания Transformer и выполнения преобразования.

person Michael Kay    schedule 20.12.2012
comment
Большое спасибо за ваш полезный ответ. К сожалению, я не могу отблагодарить вас голосованием, так как у меня недостаточно очков репутации для этого (это мой первый пост на stackoverflow). - person user1919235; 21.12.2012