我在xsl中有以下节点:
<foo>
<bar>1</bar>
<bar>2</bar>
<bar>3</bar>
<bar>4</bar>
<bar>5</bar>
<bar>6</bar>
<bar>7</bar>
<bar>8</bar>
<bar>9</bar>
</foo>
并希望将其转换为以下html:
<ul class="one">
<li>1</li>
<li>4</li>
<li>7</li>
</ul>
<ul class="two">
<li>2</li>
<li>5</li>
<li>8</li>
</ul>
<ul class="three">
<li>3</li>
<li>6</li>
<li>9</li>
</ul>
很难弄清楚如何循环并获取每三个项目,我想做这样的事情:
<ul class="one">
<xsl:for-each select="exlt:node-set($blah)/foo/bar[X1]">
<li><xsl:value-of select="node()"/></li>
</xsl:for-each>
</ul>
<ul class="two">
<xsl:for-each select="exlt:node-set($blah)/foo/bar[X2]">
<li><xsl:value-of select="node()"/></li>
</xsl:for-each>
</ul>
<ul class="three">
<xsl:for-each select="exlt:node-set($blah)/foo/bar[X3]">
<li><xsl:value-of select="node()"/></li>
</xsl:for-each>
</ul>
Where:
X1 = Every third item starting from position 1
X2 = Every third item starting from position 2
X3 = Every third item starting from position 3
可能需要使用last(),但是不能让它正常工作。
发布于 2010-08-04 03:32:06
在XPath中,条件为:
not(position() mod 3)
或
position() mod 3 = 0
我不明白你为什么不能使用op:mod
。
编辑:关于新问题,只需减去偏移量即可。所以:
X1:
position() mod 3 = 1
X2:
position() mod 3 = 2
X3:
position() mod 3 = 0
EDIT 2:现在我明白你的问题了。
发布于 2010-08-04 03:33:32
尝试位置() mod 3=1
https://stackoverflow.com/questions/3400074
复制相似问题