Параметризация пути для импорта xslt из другого xslt - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь параметризовать путь для включения файла xslt в другой, я пытался описанным способом здесь :

<xsl:param name="basedir" />
<xsl:include href="{$basedir}/team-menu.xsl" />

и вызовите xslt, выполнив: xsltproc --stringparam basedir style example.xslt example.xml

Но ни за что. Я не в состоянии сделать это работать. Похоже, что элемент xsl: output был связан, потому что единственный способ заставить его «работать» был таков:

<xsl:include href="the/path/to/file/team-menu.xsl" />
<xsl:output method="xml" indent="yes"/>
<xsl:param name="basedir" />

Я имею в виду ... поставить param после output , а включает перед. Большая проблема: я не могу использовать переменную basedir.

Есть ли способ сделать это ??

Заранее спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

В XSLT 3.0 вы можете сделать это при условии, что параметры объявлены как статические, что означает, что значения должны быть предоставлены во время компиляции. Вам также необходимо добавить к атрибуту префикс "_":

<xsl:param name="basedir" static="yes"/>
<xsl:include _href="{$basedir}/team-menu.xsl" />

Причина, по которой это не работает с обычными переменными, должна быть достаточно очевидной: значения переменных неизвестны до времени выполнения, и вы не можете начать выполнение, пока не найдете весь исходный код, составляющий таблицу стилей.

Что вы можете сделать с более ранними выпусками XSLT, в зависимости от процессора, так это перенаправить xs:include / xs:import URI с уровня API, например (на Java), с помощью пользовательского URIResolver.

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