У вас должен уже есть 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>