-- 作者:tangyin
-- 发布时间:12/4/2006 11:09:00 PM
-- 请教一个很奇怪问题
两个xml,我想让他们显示的时候奇数行背景为灰色。方法是在<tr>后面加上下面这句话: <xsl:if test="position() mod 2 != 0"><xsl:attribute name="bgcolor">gray</xsl:attribute></xsl:if> 结果下面1,2文件显示正常,3,4则出错,提示方法未知(ie浏览器)。 "-->position()<-- mod 2 != 0 请教一下是什么原因。" 1. 显示有问题的 grade.xml <?xml version="1.0" encoding="utf-8"?> <?xml:stylesheet type="text/xsl" href="grade.2.xsl"?> <document> <grade> <name>大胖</name><english>80</english> <math>90</math><chymest>90</chymest> </grade> <grade> <name>小花</name><english>98</english> <math>55</math><chymest>85</chymest> </grade> <grade> <name>小A</name><english>18</english> <math>70</math><chymest>85</chymest> </grade> <grade> <name>小胖</name><english>80</english> <math>30</math><chymest>90</chymest> </grade> </document> 2. 相应的xsl文件grade2.xsl <?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <HEAD><TITLE>成绩单</TITLE></HEAD> <BODY><xsl:apply-templates select="document"/></BODY> </HTML> </xsl:template> <xsl:template match="document"> <TABLE border="1" cellspacing="0"> <TH>姓名</TH> <TH>英语</TH><TH>数学</TH><TH>化学</TH> <xsl:for-each select="grade"> <TR> <xsl:if test="position() mod 2 != 0"><xsl:attribute name="bgcolor">gray</xsl:attribute></xsl:if><TD><xsl:value-of select="name"/></TD> <TD><xsl:apply-templates select="english"/></TD> <TD><xsl:apply-templates select="math"/></TD> <TD><xsl:apply-templates select="chymest"/></TD> </TR> </xsl:for-each> </TABLE> </xsl:template> <xsl:template match="name"></xsl:template> <xsl:template match="english|math|chymest"> <xsl:choose> <xsl:when test=".[value() $gt$ 85]"><xsl:attribute name="style">color:blue</xsl:attribute><xsl:value-of /></xsl:when> <xsl:when test=".[value() $gt$ 70]"><xsl:attribute name="style">color:green</xsl:attribute><xsl:value-of /></xsl:when> <xsl:when test=".[value() $gt$ 60]"><xsl:attribute name="style">color:yellow</xsl:attribute><xsl:value-of /></xsl:when> <xsl:otherwise><xsl:attribute name="style">color:red</xsl:attribute>不及格</xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> 3.显示正常的xml : cd_catalog.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Edited with XML Spy v4.2 --> <?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Hide your heart</TITLE> <ARTIST>Bonnie Tyler</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS Records</COMPANY> <PRICE>9.90</PRICE> <YEAR>1988</YEAR> </CD> <CD> <TITLE>Greatest Hits</TITLE> <ARTIST>Dolly Parton</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>RCA</COMPANY> <PRICE>9.90</PRICE> <YEAR>1982</YEAR> </CD> <CD> <TITLE>Still got the blues</TITLE> <ARTIST>Gary Moore</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Virgin records</COMPANY> <PRICE>10.20</PRICE> <YEAR>1990</YEAR> </CD> <CD> <TITLE>Eros</TITLE> <ARTIST>Eros Ramazzotti</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>BMG</COMPANY> <PRICE>9.90</PRICE> <YEAR>1997</YEAR> </CD> <CD> <TITLE>One night only</TITLE> <ARTIST>Bee Gees</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Polydor</COMPANY> <PRICE>10.90</PRICE> <YEAR>1998</YEAR> </CD> <CD> <TITLE>Sylvias Mother</TITLE> <ARTIST>Dr.Hook</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS</COMPANY> <PRICE>8.10</PRICE> <YEAR>1973</YEAR> </CD> <CD> <TITLE>Maggie May</TITLE> <ARTIST>Rod Stewart</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Pickwick</COMPANY> <PRICE>8.50</PRICE> <YEAR>1990</YEAR> </CD> <CD> <TITLE>Romanza</TITLE> <ARTIST>Andrea Bocelli</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>Polydor</COMPANY> <PRICE>10.80</PRICE> <YEAR>1996</YEAR> </CD> <CD> <TITLE>When a man loves a woman</TITLE> <ARTIST>Percy Sledge</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Atlantic</COMPANY> <PRICE>8.70</PRICE> <YEAR>1987</YEAR> </CD> <CD> <TITLE>Black angel</TITLE> <ARTIST>Savage Rose</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>Mega</COMPANY> <PRICE>10.90</PRICE> <YEAR>1995</YEAR> </CD> <CD> <TITLE>1999 Grammy Nominees</TITLE> <ARTIST>Many</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Grammy</COMPANY> <PRICE>10.20</PRICE> <YEAR>1999</YEAR> </CD> <CD> <TITLE>For the good times</TITLE> <ARTIST>Kenny Rogers</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Mucik Master</COMPANY> <PRICE>8.70</PRICE> <YEAR>1995</YEAR> </CD> <CD> <TITLE>Big Willie style</TITLE> <ARTIST>Will Smith</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>9.90</PRICE> <YEAR>1997</YEAR> </CD> <CD> <TITLE>Tupelo Honey</TITLE> <ARTIST>Van Morrison</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Polydor</COMPANY> <PRICE>8.20</PRICE> <YEAR>1971</YEAR> </CD> <CD> <TITLE>Soulsville</TITLE> <ARTIST>Jorn Hoel</ARTIST> <COUNTRY>Norway</COUNTRY> <COMPANY>WEA</COMPANY> <PRICE>7.90</PRICE> <YEAR>1996</YEAR> </CD> <CD> <TITLE>The very best of</TITLE> <ARTIST>Cat Stevens</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Island</COMPANY> <PRICE>8.90</PRICE> <YEAR>1990</YEAR> </CD> <CD> <TITLE>Stop</TITLE> <ARTIST>Sam Brown</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>A and M</COMPANY> <PRICE>8.90</PRICE> <YEAR>1988</YEAR> </CD> <CD> <TITLE>Bridge of Spies</TITLE> <ARTIST>T`Pau</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Siren</COMPANY> <PRICE>7.90</PRICE> <YEAR>1987</YEAR> </CD> <CD> <TITLE>Private Dancer</TITLE> <ARTIST>Tina Turner</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Capitol</COMPANY> <PRICE>8.90</PRICE> <YEAR>1983</YEAR> </CD> <CD> <TITLE>Midt om natten</TITLE> <ARTIST>Kim Larsen</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>Medley</COMPANY> <PRICE>7.80</PRICE> <YEAR>1983</YEAR> </CD> <CD> <TITLE>Pavarotti Gala Concert</TITLE> <ARTIST>Luciano Pavarotti</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>DECCA</COMPANY> <PRICE>9.90</PRICE> <YEAR>1991</YEAR> </CD> <CD> <TITLE>The dock of the bay</TITLE> <ARTIST>Otis Redding</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Atlantic</COMPANY> <PRICE>7.90</PRICE> <YEAR>1987</YEAR> </CD> <CD> <TITLE>Picture book</TITLE> <ARTIST>Simply Red</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>Elektra</COMPANY> <PRICE>7.20</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Red</TITLE> <ARTIST>The Communards</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>London</COMPANY> <PRICE>7.80</PRICE> <YEAR>1987</YEAR> </CD> <CD> <TITLE>Unchain my heart</TITLE> <ARTIST>Joe Cocker</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>EMI</COMPANY> <PRICE>8.20</PRICE> <YEAR>1987</YEAR> </CD> </CATALOG> 4. cd_catalog.xml相应的xsl: cd_catalog.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:template match="/"> <html> <head> <title>CD目录</title> </head> <body> <h3>CD Catalog</h3><hr/> <table border="1" cellspacing="0" > <tbody> <tr> <th>Title</th> <th>Artist</th> <th>COUNTRY</th> <th>COMPANY</th> <th>PRICE</th> <th>YEAR</th> </tr> <xsl:for-each select="CATALOG/CD[YEAR>1986]"> <!--注意:大小写敏感!--> <tr> <xsl:if test="position() mod 2 != 0"><xsl:attribute name="bgcolor">gray</xsl:attribute></xsl:if> <td><xsl:value-of select="TITLE"/> </td> <td><xsl:value-of select="ARTIST"/></td> <td><xsl:value-of select="COUNTRY"/></td> <td><xsl:value-of select="COMPANY"/></td> <td><xsl:value-of select="PRICE"/></td> <td><xsl:value-of select="YEAR"/></td> </tr> </xsl:for-each> </tbody> </table> </body> </html> </xsl:template> </xsl:stylesheet>
|