xslt 1.0如何在foreach循环中创建differentes变量

时间:2016-12-28 14:01:27

标签: xslt-1.0

我有xml源作为sql查询的结果,我在浏览器上显示所有xsl文件。在每个循环的内部我需要为每次迭代创建一个不同的变量,因为我必须将此变量传递给javascript函数进行详细说明,并将结果在带有ID的标记上推送html。我不知道如何为变量指定正确的名称。我写了这个没有用的东西:

<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 个答案:

答案 0 :(得分: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>