XSLT: есть ли способ "унаследовать" постоянную функциональность?
Я снова должен собрать немного XSLT, чтобы превратить сгенерированный XML в (а не просто генерировать HTML).
у меня снова огромное дежа вю. Я снова должен решить основные проблемы, например:
- как преобразовать символы в действительные ссылки на объекты HTML
- Как сохранить пробелы / возврат каретки при конвертации в HTML
- как конвертировать в HTML, а не в HTML
- как конвертировать даты из формата xml в презентабельный формат
- как разорвать строки с помощью подстроки
Это все, что я решал много раз раньше. Но каждый раз, когда я возвращаюсь в XSLT, мне приходится начинать с нуля, каждый раз заново изобретая колесо.
Если бы это был язык программирования, у меня была бы библиотека стандартных функций и процедур, которые я мог бы вызвать. у меня были бы подпрограммы для выполнения часто повторяющихся задач. я бы унаследовал от базового класса, который уже реализует уродливый шаблонный материал.
Есть ли какой-либо способ в XSLT развивать, расширять и улучшать экосистему с помощью стандартного кода?
1 ответ
Это все, что я решал много раз раньше. Но каждый раз, когда я возвращаюсь в XSLT, мне приходится начинать с нуля, каждый раз заново изобретая колесо.
Это не обязательно, конечно.
Если бы это был язык программирования
Да, XSLT - это язык программирования.
у меня была бы библиотека стандартных функций и процедур, которые я могу вызвать. у меня были бы подпрограммы для выполнения часто повторяющихся задач.
Да, вы можете сделать это в XSLT.
я бы унаследовал от базового класса, который уже реализует уродливый шаблонный материал.
Да, в XSLT есть нечто похожее.
Есть ли какой-либо способ в XSLT развивать, расширять и улучшать экосистему с помощью стандартного кода?
Даже в XSLT 1.0 имеются мощные стандартные функции, поддерживающие возможность повторного использования:
<xsl:import>
<xsl:include>
<xsl:apply-templates>
<xsl:call-template>
<xsl:apply-imports>
XSLT 2.0 добавляет еще несколько мощных функций:
<xsl:function>
- Параметры для
<xsl:apply-imports>
<xsl:next-match>
В течение достаточно долгого времени было несколько библиотек XSLT:
- FXSL ( 1.x и 2.x) реализует функции высшего порядка в XSLT 1.0 / 2.0
- FunctX - библиотека полезных функций XSLT 2.0 и XQuery.
XPath 2.1 и XSLT 2.1 добавляют функции высшего порядка в качестве стандарта. Функции становятся первоклассными типами данных.