XSLT中数组索引的计数器变量

时间:2015-09-03 14:57:09

标签: html xml xslt

我有一个xsl样式表,如下所示:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html">
    </xsl:output>
    <xsl:template match="record">
      <html>
      <body>
      <h3>{$attr}</h3>
      <table border="1">
          <tr>
           <xsl:for-each select="cd">
            <td style="text-align:left"><a href="http://localhost:8010/disp1.xqy?varName={$y[i]}"> <xsl:value-of select="value" /></a></td> 
            </xsl:for-each></tr> 
       </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

$ y是一个包含值&#34; 123&#34;的字符串数组。和&#34; 456&#34;在$ y [1]和$ y [2]的位置。我想要一个解决方案,以便我可以在$ y [i]中递增i的值,以便在for-each select =&#34; cd&#34;的每次迭代中,它将coorect值传递给href标记中的varName。谁能帮助我如何做到这一点? xslt遍历的xml文档如下:

<cd>
<value>123</value>
</cd>
<cd>
<value>456</value>
</cd>
</record>

我是xslt的新手。所以有人可以试着帮我这个吗?

1 个答案:

答案 0 :(得分:0)

我认为您的样式表不完整,因为变量 attr 并且 y 未在任何地方声明。我还假设 y 是节点集而不是数组,因为XSLT中不支持数组参数。

如果 i 的值与 cd 的索引相关联,则可以使用 position()功能。

<td style="text-align:left"><a href="http://localhost:8010/disp1.xqy?varName={$y[position()]}"> <xsl:value-of select="value" /></a></td>

此外,如果您的 varName 值对应于源中元素的值,为什么需要一个数组来保存相同的值?

<td style="text-align:left"><a href="http://localhost:8010/disp1.xqy?varName={value}"> <xsl:value-of select="value" /></a></td>