Хорошо, так что заголовок немного запутан. Я думаю, что немного легче объяснить мою проблему. В perl я получаю массив строковых значений (я не уверен, сколько времени это будет, потому что это зависит от файла). Поскольку я не знаю, как долго будет массив, я использую for-each
в perl и создаю переменную в perl, которая представляет собой просто длинную строку, которая создает кучу переменных в xslt. Например, вот мой код делает что:Использование переменной для обозначения имени другой переменной для ее вызова
foreach my $node (@objects) {
$count++;
$xslt_vars = $xslt_vars . '<xsl:variable name="namedsets' . $count . '"/><xsl:text>' . $node . '</xsl:text></xsl:variable>';
}
Моя проблема в том, я создаю неизвестное число переменных в моей таблице стилей XSLT. У меня есть этот номер в переменной в XSLT, и я использую его в шаблоне так:
<xsl:template name="expression">
<xsl:param name="count"/>
<xsl:choose>
<xsl:when test="$count > $name-count">
</xsl:when>
<xsl:otherwise>
<xsl:for-each select=".//expression">
<xsl:variable name="expression" select="."/>
<xsl:variable name="express-test">
<xsl:text>$name-sets{$count}</xsl:text>
</xsl:variable>
<xsl:variable name="trying">
<xsl:value-of select="{$express-test}"/>
</xsl:variable>
<xsl:if test="contains($expression, $trying)">
<a>This Worked</a>
</xsl:if>
</xsl:for-each>
<xsl:call-template name="expression">
<xsl:with-param name="count" select="$count + 1"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
$count
Так это не то же счетчик, как в образце PERL кода. Perl count
- $name-count
(я не знаю, почему я это сделал, но это не имеет особого значения). Я создал $express-test
, чтобы иметь имя текущей переменной $namedset00
. Моя проблема вызывает эту переменную с правильным номером. Как вы можете видеть, я попытался установить $trying
на значение {$express-test}
, но этот синтаксис не разрешен в xslt. Кто-нибудь сделал что-нибудь подобное в xslt? Или знаете, как вызвать переменное имя переменной в xslt?