XSLT: есть ли способ «унаследовать» постоянную функциональность? - PullRequest
4 голосов
/ 01 мая 2010

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

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

  • как преобразовать символы в действительные html-ссылки на сущности
  • как сохранить пробелы / возврат каретки при конвертации в html
  • как конвертировать в HTML в отличие от xhtml
  • как конвертировать даты из xml формата в презентабельный формат
  • как разрывать строки с помощью подстроки

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

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

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

1 Ответ

3 голосов
/ 01 мая 2010

Это все, что я решил много раз раньше. Но каждый раз, когда я вернуться в 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 добавить функции высшего порядка в качестве стандартных . Функции становятся первоклассными типами данных.

...