Отображение всех глобальных параметров в XSLT - PullRequest
2 голосов
/ 18 января 2012

Я хотел бы знать, есть ли способ просмотреть все глобальные параметры в XSLT без явного знания имени.

е

<xsl:param name="T"/>

В моем cms у меня есть текстовое поле, в котором я могу ввести «T = что угодно, A = dave». Затем эти параметры программно добавляются для доступа в документ XSLT. Теперь предположим, что у меня нет доступа к источнику, есть ли способ раскрыть имя и значение параметров, не зная имени для начала?

С уважением, Самуэль Лиллекер

Ответы [ 2 ]

4 голосов
/ 18 января 2012

У вас должен уже есть xsl:param, определенный с тем же именем в вашем преобразовании XSLT - иначе значение не может быть передано несуществующему параметру.

И нет способа найти (динамические) значения глобальных параметров, если вы статически не знаете имен параметров.

Возможно иметь что-то вроде этого:

<xsl:variable name="vGlobalParamValues" select=
 "document('')/*/xsl:param/@select
|
  document('')/*/xsl:param[not(@select)]/node()
 "/>

Но это выбирает только значения параметров времени компиляции и может возвращать что-то вроде:

<xsl:apply-templates/>

что, конечно, не является результатом фактического применения шаблонов.

Правильный способ передачи неизвестных пар имя-значение в качестве параметров - сделать их частью глобального единственного параметра , например:

<xsl:param name="pParams">
 <param name="someName1">someValue1</param>
 <param name="someName2">someValue2</param>

  .  .  .  .  .  .  .  .

 <param name="someNameN">someValueN</param>
</xsl:param>
0 голосов
/ 22 января 2012

Некоторые API-интерфейсы процессора XSLT могут позволять вам определять имена параметров таблицы стилей. Но если API этого не обеспечивает, достаточно просто получить его из исходного кода: это одна из вещей, которые вы получаете бесплатно, поскольку синтаксис XSLT - XML.

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