好吧,這樣標題有點混亂。我認爲解釋我的問題更簡單一些。在perl中,我得到一個字符串值的數組(我不知道它將持續多長時間,因爲它取決於文件)。因爲我不知道數組會有多長,我在perl中使用for-each
,並在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中調用變量名稱?