2016-12-28 13 views
0

У меня есть источник XML как результат запроса sql, и я показываю все в браузере с файлом xsl. Внутри a для каждого цикла мне нужно создать динамическую переменную для каждой итерации из-за того, что мне нужно передать эту переменную в javascript-функцию, которая будет разработана, и результат push 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

Одна вещь, которую вы могли бы сделать, это создать шаблон, содержащий переменную и вызов вашей яваскрипта функции. Передайте все, что вам нужно для string-replace-all. Затем вызовите шаблон внутри тегов сценария следующим образом: (. Пример кода не тестировалась)

<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 переменных с другим именем (n = records) –

+0

Я не совсем понимаю о n переменных. Надеюсь, код, который я добавил, устраняет необходимость в n переменных. Просто убедитесь, что вы поместили значение, где коды говорят <Поместите некоторое значение здесь>. – Bluewood66

 Смежные вопросы

  • Нет связанных вопросов^_^