Как я могу настроить переменные конфигурации в XSLT для разных сред? - PullRequest
0 голосов
/ 14 июля 2020

У нас есть сайт, использующий XSLT. Существует файл config.xslt, в котором объявляется несколько глобальных переменных, и он включен во множество других таблиц стилей. Проблема в том, что мы размещаем сайт в нескольких разных местах и ​​настраиваем некоторые из этих переменных в зависимости от среды.

Обычно мы создаем как основной файл конфигурации, так и локальный файл конфигурации, чтобы сохранить локальный изменения вне контроля версий. Локальный файл конфигурации может переопределить любую из переменных, которые ему необходимы, без изменения основного файла конфигурации. Однако, насколько я понимаю, это невозможно в рамках XSLT, поскольку переменные XSLT могут быть объявлены только один раз, и вы не можете проверить, были ли они уже объявлены.

Тогда мой вопрос: возможно ли реализовать такую ​​вещь в XSLT?

Если нет, что было бы лучше для управления нашей конфигурацией?

Изменить: Спасибо Мартину Хоннену за предложение xsl: Импортировать. Я посмотрел, как использовать импорт, и он делает то, что я хочу. Однако это оставляет мне другую проблему, когда локальный файл конфигурации всегда должен существовать, иначе все приложение сломается. Поскольку я хочу удалить локальный файл конфигурации из системы контроля версий, он не совсем идеален. Я нашел этот ответ, но он для xslt-2.0, и я, к сожалению, застрял на xslt-1.0.

1 Ответ

1 голос
/ 17 июля 2020

Я могу предложить два варианта.

  1. Добавьте вашу конфигурацию в качестве параметра в ваш XSL-преобразователь перед выполнением преобразования. Как вы это сделаете, зависит от того, какой трансформатор вы используете. Конфигурация может быть XML или набором пар имя = значение.

или

Используйте файл config. xml, чтобы заполнить xsl: param в верхней части вашего XSLT. Прочтите значения с помощью document (). Примерно так:
<xsl:param name="config">
  <xsl:choose>
    <xsl:when test="document('C:\config\config.xml')">
      <xsl:value-of select="document('C:\config\config.xml)/config" />
    </xsl:when>
    <xsl:otherwise><config/></xsl:otherwise>
  </xsl:choose>
</xsl:param>

(Если вы сделаете это, конфиг всегда будет не ниже )

...