首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >for-each:每隔3个项目获取一次(分成3列)

for-each:每隔3个项目获取一次(分成3列)
EN

Stack Overflow用户
提问于 2010-08-04 03:28:21
回答 2查看 3.9K关注 0票数 5

我在xsl中有以下节点:

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
<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>

很难弄清楚如何循环并获取每三个项目,我想做这样的事情:

代码语言:javascript
运行
复制
<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(),但是不能让它正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-04 03:32:06

在XPath中,条件为:

代码语言:javascript
运行
复制
not(position() mod 3)

代码语言:javascript
运行
复制
position() mod 3 = 0

我不明白你为什么不能使用op:mod

编辑:关于新问题,只需减去偏移量即可。所以:

X1:

代码语言:javascript
运行
复制
position() mod 3 = 1

X2:

代码语言:javascript
运行
复制
position() mod 3 = 2

X3:

代码语言:javascript
运行
复制
position() mod 3 = 0

EDIT 2:现在我明白你的问题了。

票数 5
EN

Stack Overflow用户

发布于 2010-08-04 03:33:32

尝试位置() mod 3=1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3400074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档