XSLT: есть ли способ "унаследовать" постоянную функциональность?

Я снова должен собрать немного XSLT, чтобы превратить сгенерированный XML в (а не просто генерировать HTML).

у меня снова огромное дежа вю. Я снова должен решить основные проблемы, например:

  • как преобразовать символы в действительные ссылки на объекты HTML
  • Как сохранить пробелы / возврат каретки при конвертации в HTML
  • как конвертировать в HTML, а не в HTML
  • как конвертировать даты из формата xml в презентабельный формат
  • как разорвать строки с помощью подстроки

Это все, что я решал много раз раньше. Но каждый раз, когда я возвращаюсь в XSLT, мне приходится начинать с нуля, каждый раз заново изобретая колесо.

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

Есть ли какой-либо способ в XSLT развивать, расширять и улучшать экосистему с помощью стандартного кода?

1 ответ

Это все, что я решал много раз раньше. Но каждый раз, когда я возвращаюсь в XSLT, мне приходится начинать с нуля, каждый раз заново изобретая колесо.

Это не обязательно, конечно.

Если бы это был язык программирования

Да, XSLT - это язык программирования.

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

Да, вы можете сделать это в XSLT.

я бы унаследовал от базового класса, который уже реализует уродливый шаблонный материал.

Да, в XSLT есть нечто похожее.

Есть ли какой-либо способ в XSLT развивать, расширять и улучшать экосистему с помощью стандартного кода?

Даже в XSLT 1.0 имеются мощные стандартные функции, поддерживающие возможность повторного использования:

  1. <xsl:import>
  2. <xsl:include>
  3. <xsl:apply-templates>
  4. <xsl:call-template>
  5. <xsl:apply-imports>

XSLT 2.0 добавляет еще несколько мощных функций:

  1. <xsl:function>
  2. Параметры для <xsl:apply-imports>
  3. <xsl:next-match>

В течение достаточно долгого времени было несколько библиотек XSLT:

  1. FXSL ( 1.x и 2.x) реализует функции высшего порядка в XSLT 1.0 / 2.0
  2. FunctX - библиотека полезных функций XSLT 2.0 и XQuery.

XPath 2.1 и XSLT 2.1 добавляют функции высшего порядка в качестве стандарта. Функции становятся первоклассными типами данных.

Другие вопросы по тегам