我有一个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的新手。所以有人可以试着帮我这个吗?
答案 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>