如何在有条件选择的情况下实现表格中行的颜色交替?

liul17 2006-10-16 10:17:10
xml文档:
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="program.xsl"?>
<root>
<programme>
<id>47852</id>
<name>中国</name>
<chnid>1001</chnid>
</programme>
<programme>
<id>47856</id>
<name>俯视</name>
<chnid>1003</chnid>
</programme>
<programme>
<id>47854</id>
<name>科学</name>
<chnid>1002</chnid>
</programme>
<programme>
<id>47853</id>
<name>天天饮食</name>
<chnid>1001</chnid>
</programme>
</root>


xsl文档:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="chanid" select="1001" />
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>id</th>
<th>name</th>
<th>channelid</th>
</tr>

<tr><td><xsl:value-of select="$chanid"/></td>
</tr>
<xsl:for-each select="root/programme">
<xsl:if test="chnid='1001'">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="position()"/><xsl:value-of select="name"/></td>
<td><xsl:value-of select="chnid"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

由于是条件选择,position()返回的是原来xml中结点的位置,我想获得条件选择后的结点位置,我试过用变量,后来发现xsl中的变量是不能修改的,请问我该如何实现这个功能?能不能详细说下,谢谢!!
...全文
294 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameboy766 2006-10-17
  • 打赏
  • 举报
回复
帮顶
cds27 2006-10-17
  • 打赏
  • 举报
回复
<xsl:template name="getIndex"><!-- 获得当前层下,指定元素的序号 -->
<xsl:param name="cond"/>
<xsl:param name="initNo">1</xsl:param> <!-- 设置初始值,默认为1。 -->
<xsl:value-of select="count(preceding-sibling::programme[chnid/text()=$cond])+number($initNo)"/>
</xsl:template>
liul17 2006-10-17
  • 打赏
  • 举报
回复
上面的提问中已经包括了xml数据和xsl文档,现在的结果你可以看到,position()显示的是1和4
,这个是原xml中的结点位置,我的需求就是因为只有两条满足条件所以编号为1,2
cds27 2006-10-17
  • 打赏
  • 举报
回复
count(preceding-sibling::*[name()='programme'])相当于position()的效果。

[]中间填写你需要的条件。具体的条件只有你才明白,我不知道你需要什么条件。你可以把你的需求详细描述下,最好有简单的样本的可以看。
liul17 2006-10-17
  • 打赏
  • 举报
回复
<xsl:value-of select="count(preceding-sibling::*[name()='programme'])" />
获得的也是基于原xml结构的,并不是条件选择后的

liul17 2006-10-17
  • 打赏
  • 举报
回复
to cds27:
我确实看了 但我刚接触xslt 有很多都不是很明白 你的代码大概看明白了 但不清楚 我的这个需求如何实现 谢谢你帮我解决下!
cds27 2006-10-17
  • 打赏
  • 举报
回复
你没看过吧,给你的地址,至少应该打开看看,你说是吧?
liul17 2006-10-17
  • 打赏
  • 举报
回复
to cds27:
你的这篇文章我已经看过,请看一下我的问题,position()是原树的位置,如何获得条件选择后的结点位置?
cds27 2006-10-17
  • 打赏
  • 举报
回复
参考这篇: http://blog.csdn.net/cds27/archive/2006/08/24/1112297.aspx

8,906

社区成员

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

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