我在XSL以下節點:的for-each:讓每一個第3項(分成3列)
<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
可能需要使用最後的(),但不能完全正確地工作。
想到我也可以使用mod,但是如何循環訪問其他列。用更多細節更新了問題。也許我只是錯過了一些非常明顯的東西。看看第2列應該是#s:2,5,8這些不是等於mod。 – 2010-08-03 19:38:48
謝謝!我想我完全誤解了國防部做了什麼,認爲它只有1或0,取決於數字是否可以整除。只用於交替行。 – 2010-08-03 19:57:34
@路易斯W:你好!從http://www.w3.org/TR/xpath/#numbers:「mod運算符返回來自截斷部分的餘數」。 – 2010-08-03 20:03:59