xslt 1.0 как создать переменную differentes внутри цикла foreach

у меня есть источник xml в результате sql-запроса, и я показываю все в браузере с xsl-файлом. Внутри для каждого цикла мне нужно создать динамически другую переменную для каждой итерации, потому что я должен передать эту переменную в функцию javascript, чтобы быть разработанным, и результат push html на теге с ID. Я не знаю, как назначить правильное имя переменной. Я написал это, что не работает:

<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>

1 ответ

  1. Вы можете создать шаблон, содержащий переменную и вызов функции javascript. Передайте все, что вам нужно для строки-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>