2016-12-28 105 views
0

內differentes變量i具有XML源的SQL查詢的結果,我顯示所有與XSL文件瀏覽器。裏面每個循環,我需要在每個迭代dinamically創建一個不同的變量,因爲我有這個變量傳遞給有待於推敲JavaScript函數和與ID標籤的結果推HTML。我不知道如何爲變量分配正確的名稱。我寫到這是行不通的:XSLT 1.0如何創建foreach循環

<xsl:for-each select="Record"> 
    <table id="tableId-{position()}"> 
    <thead> 
     <tr> 
     <th>Testata 1</th> 
     <th>Testata 2</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
    </table> 
    <xsl:variable name="variableN"> 
    <xsl:call-template name="string-replace-all"> 
     <xsl:with-param name="text" select="testo" /> 
     <xsl:with-param name="replace">'</xsl:with-param> 
     <xsl:with-param name="by">\'</xsl:with-param> 
    </xsl:call-template> 
    </xsl:variable> 
    <script> 
    displayTableRowsDueColById('<xsl:value-of select="$variableN" />'); 
    </script> 
    </xsl:if> 
</xsl:for-each> 

回答

0

你可以做的一件事就是創建一個模板,其中包含變量和對你的javascript函數的調用。通過你需要的任何字符串替換全部。然後調用腳本標記內的模板如下:(示例代碼未測試)

<xsl:for-each select="Record"> 
    <table id="tableId-{position()}"> 
    <thead> 
     <tr> 
     <th>Testata 1</th> 
     <th>Testata 2</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
    </table> 
    <script> 
    <xsl:call-template name="callDisplayTable"> 
     <xsl:with-param name="text" select=" <Put some value here> "/> 
    </xsl:call-template> 
    </script> 
    </xsl:if> 
</xsl:for-each> 

<xsl:template name="callDisplayTable"> 
    <xsl:param name="text"/> 

    <xsl:variable name="variableN"> 
    <xsl:call-template name="string-replace-all"> 
     <xsl:with-param name="text" select="$text" /> 
     <xsl:with-param name="replace">'</xsl:with-param> 
     <xsl:with-param name="by">\'</xsl:with-param> 
    </xsl:call-template> 
    </xsl:variable> 

    displayTableRowsDueColById('<xsl:value-of select="$variableN" />'); 

</xsl:template> 
+0

謝謝@ Bluewood66但你可以寫例如一些線路?我的問題是有不同的名稱(N =記錄) –

+0

我不是對n個變量很清楚n個變量。希望我添加的代碼消除了對n個變量的需求。只要確保你在代碼所表示的地方放置了一個值<在此放置一些值>。 – Bluewood66