Как запустить преобразование javax. xml .transform.Transformer в нестандартном режиме XSLT? - PullRequest
0 голосов
/ 06 января 2020

XSLT поддерживает различные режимы для своих шаблонов совпадений. Обработка начинается в режиме без имени по умолчанию, но может быть изменена при каждом вызове на <xsl:apply-templates/>. Однако я хочу запустить обработку XSLT в режиме не по умолчанию.

Код, с которым я сейчас работаю, использует экземпляр javax.xml.transform.Transformer для загрузки таблицы стилей XSLT и выполнения преобразования , Можно ли с помощью этого подхода указать в Java, в каком режиме я хотел бы начать преобразование? Я не могу найти ни одного. В случае, если это имеет значение, сама таблица стилей находится в XSLT версии 2.0.

Я знаю, что это возможно с Saxon, позвонив по номеру net.sf.saxon.s9api.XsltTransformer.setInitialMode(QName), но я прошу любые решения со встроенным решением Java : javax.xml.transform.Transformer.

1 Ответ

1 голос
/ 06 января 2020

Интерфейс JAXP был разработан для XSLT 1.0, который не позволяет выбирать начальный режим, отличный от заданного по умолчанию.

Saxon включает различные расширения интерфейса JAXP, чтобы обойти такие ограничения: приведите JAXP Transformer к net.sf.saxon.jaxp.TransformerImpl и позвоните setInitialMode().

Но как только вы начнете использовать расширения Saxon для интерфейса JAXP, у вас будет очень мало причин отдавать предпочтение JAXP по сравнению с собственным интерфейсом S9api Saxon - особенно когда вы начинаете использовать возможности XSLT 3.0, которые Saxon вообще не предоставляет через JAXP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...