xslt for-each的一个小问题

zhaoxichao 2003-07-22 07:58:48
有一个table,每个tr你们3个td
我的想法是,判断循环,到3个地时候做一次tr进行换行
大概是这样写的
<xsl:for-each select="content">
<xsl:if test="position() mod 3 = 0">
</tr>
</xsl:if>
<xsl:if test="position() mod 3 = 0">
<tr>
</xsl:if>
</xsl:for-each>
但是这里</tr><tr>不是良构的,不行
有什么好办法解决
谢谢
...全文
58 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssm1226 2003-07-23
  • 打赏
  • 举报
回复
saucer的方法很好,我一直也使用的是这个方法


但我写出的这个方法也是可以的,你可以测试下

eg:

<table border=1>
<tr>
<td >sssssss
<td>ddddd
<td>ddddddddd
<tr/>
<td >sssssss
<td>ddddd
<td>ddddddddd
</tr>
</table>

zhaoxichao 2003-07-23
  • 打赏
  • 举报
回复
楼上,我的<tr></tr>里面是要写内容的,这个方法不行
ssm1226 2003-07-23
  • 打赏
  • 举报
回复
<xsl:for-each select="content">
...........


<xsl:if test="position() mod 3 = 0">
<tr/>
</xsl:if>

</xsl:for-each>
zhaoxichao 2003-07-23
  • 打赏
  • 举报
回复
thanks
试试先
ssm1226 2003-07-23
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="col" select="3" />
<table>
<xsl:for-each select="qa_main/QUES[(position() - 1) mod $col = 0]">
<tr>
<td><xsl:value-of select="."/></td>
<xsl:for-each select="following-sibling::*[position() < $col]">
<td><xsl:value-of select="." /></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
zhaoxichao 2003-07-23
  • 打赏
  • 举报
回复
我对xsl的语法不是很熟
xml:<qa_main ><QUES><QUES_ID>1</QUES_ID></QUES>
<QUES><QUES_ID>2</QUES_ID></QUES>
<QUES><QUES_ID>3</QUES_ID></QUES>
<QUES><QUES_ID>4</QUES_ID></QUES>
</qa_main>
按照 saucer(思归, MS .NET MVP)给的xsl:写的xsl
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<xsl:variable name="col" select="3" />
<xsl:for-each select="qa_main/QUES[(position() - 1) mod $col = 0]">
<tr>
<xsl:for-each select="../QUES[position() < $col]">
<td><xsl:value-of select="QUES_ID" /></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但是解析不对
我想解析成
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td></tr>

麻烦改改
saucer 2003-07-22
  • 打赏
  • 举报
回复
<xsl:variable name="col" select="3" />
<xsl:for-each select="content[(position() - 1) mod $col = 0]">
<tr>
<td><xsl:value-of select="." /></td>
<xsl:for-each select="following-sibling::content[position() < $col]">
<td><xsl:value-of select="." /></td>
</xsl:for-each>
</tr>
</xsl:for-each>
zhaoxichao 2003-07-22
  • 打赏
  • 举报
回复
help!

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧