以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  如何获得循环节点的序号,并作为条件参数  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=23917)


--  作者:fwjfwj11
--  发布时间:11/3/2005 4:31:00 PM

--  如何获得循环节点的序号,并作为条件参数
例如:需要把下面黑体标签<tr>的bgcolor的属性颜色改成2种颜色交替。
逻辑是if(节点序号/2==1) {***}  else  {***}
如何用XSL实现?

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
 <xsl:template match="/">
  <HTML><HEAD><TITLE>1999年生产统计</TITLE></HEAD>
   <BODY>
    <xsl:apply-templates select="document"/>
   </BODY>
  </HTML>
 </xsl:template>
 
 <xsl:template match="document">
   <H3>1999年生产统计</H3>
  <TABLE cellspacing="0" border="1">
   <TH>班组</TH>
   <TH>一季度</TH>
   <TH>二季度</TH>
   <TH>三季度</TH>
   <TH>四季度</TH>
   <xsl:apply-templates select="report"/>
  </TABLE>
 </xsl:template>

 <xsl:template match="report">
  <TR bgcolor="#d8d8d8">
  <TD><xsl:value-of select="class"/></TD>
  <TD><xsl:apply-templates select="q1"/></TD>
  <TD><xsl:apply-templates select="q2"/></TD>
  <TD><xsl:apply-templates select="q3"/></TD>
  <TD><xsl:apply-templates select="q4"/></TD>
  </TR>
 </xsl:template>
 
 <xsl:template match="q1|q2|q3|q4">
 <!--此处测试产量,如小于等于20则添加一STYLE属性color,其值为red(红色)-->
  <xsl:if test=".[value() $le$ 20]">
  <xsl:attribute name="style">color:red</xsl:attribute>
  </xsl:if>
  <xsl:value-of/>
 </xsl:template>
</xsl:stylesheet>


--  作者:Qr
--  发布时间:11/3/2005 5:01:00 PM

--  
<TR><xsl:if test="index() mod 2=1"><xsl:attribe name="bgcolor">#d8d8d8</xsl:attribe></xsl:if><xsl:if test="index() mod 2=0"><xsl:attribe name="bgcolor">#8d8d8d</xsl:attribe></xsl:if><!--注意粗体部分是否写正确了,另外,不知草案中有没有mod这个方法,标准版就是这么用的,但标准版中没有index(),用position()代替-->
...
</TR>

xsl:if中没有else,可用xsl:choose...xsl:when.... 代替,此处最好用模板。


--  作者:tour-code
--  发布时间:3/2/2006 2:11:00 PM

--  
没看出来班主怎么取得循环节点的序号
--  作者:fxn9801
--  发布时间:3/14/2006 4:44:00 PM

--  用这个!
<xsl:if test="position() mod 2=0">
<xsl:attribute name="bgcolor">
#99CC99
</xsl:attribute>
</xsl:if>

position()表示当前节点的序号!


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
93.750ms