xml - xsl conditional tagging with for-each statement -
xml - xsl conditional tagging with for-each statement -
here xml file:
<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="question.xsl"?> <root> <overall_test> <overall_name> movies </overall_name> <overall_result> passed </overall_result> </overall_test> <subtest> <name> matrix </name> <result> passed </result> </subtest> <subtest> <name> die hard </name> <result> failed </result> </subtest> <subtest> <name> terminator </name> <result> passed </result> </subtest> <subtest> <name> avataar </name> <result> failed </result> </subtest> </root> the xsl file here:
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <xsl:for-each select="root/overall_test"> <h2>overall test name:<xsl:value-of select="overall_name"/></h2> <h2>overall test result:<xsl:value-of select="overall_result"/></h2> </xsl:for-each> <table border="1"> <tr bgcolor="#gray"> <th>sub test name</th> <th>sub test result</th> </tr> <xsl:for-each select="root/subtest"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="result"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> this way xml looks in browser (this tables in ie ):
overall test name: movies overall test result: passed sub test name sub test result matrix passed die hard failed terminator passed avataar failed i need color "passed" , "failed" sections greenish , red, depending on value of tag. tried xsl:choose, xsl:when , ended messing file. help appreciated
try replacing:
<td><xsl:value-of select="result"/></td> with:
<td> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="normalize-space(result)='passed'">green</xsl:when> <xsl:otherwise>red</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:value-of select="result"/> </td> xml xslt
Comments
Post a Comment