Есть ли способ сделать это динамическое, безопасное XSL включает / импортировать в XSL? - PullRequest
1 голос
/ 03 июня 2011

Я хотел бы иметь xsl: include / import, который будет удовлетворять 2 требованиям

  1. Ошибка безопасна: например если шаблон не существует, ничего не делать
  2. Динамический: например значение включенного XSL является значением в XML

например.

<xsl:import href="<xsl:value-of select='/root/@additionalFormattingXSL' />.xsl"/>

Есть ли способ получить некоторые или все вышеперечисленные требования? (не разрешена Java) в любой существующей версии XSLT?

Ответы [ 2 ]

2 голосов
/ 04 июня 2011

Было бы легче помочь вам, если бы вы сказали, чего пытаетесь достичь: тогда мы могли бы принять решение о том, является ли способ, которым вы надеетесь достичь этого, совершенно бессмысленным или нет.

Помните, чтоxsl: import - это механизм для создания программы из различных модулей, и, как и в большинстве языков программирования, программы XSLT создаются и компилируются до того, как они начнут выполняться.Поэтому вы, конечно, не можете заставить таблицу стилей динамически изменять себя, обрабатывая xsl: import, как если бы это была какая-то исполняемая инструкция.Однако вы можете написать таблицу стилей, результатом которой является создание или изменение другой таблицы стилей XSLT, и это часто имеет смысл.

1 голос
/ 03 июня 2011

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

Таким образом, вы получаете полный контроль над требованиями 1 и 2. Относительно требования1, вы можете использовать doc-available () в вашей таблице стилей обработки импорта.

К вашему сведению, в общем случае способ включения динамических значений в значение атрибута заключается в использовании Шаблон значения атрибута , например,

href="{/root/@additionalFormattingXSL}.xsl"

Однако это работает только для атрибутов, обозначенных как AVT, таких как атрибут буквального элемента результата.Я почти уверен, что не относится к атрибуту href <xsl:import>.

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