This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Changing colors of eachother line
- To: "'XSL-List at lists dot mulberrytech dot com'" <XSL-List at lists dot mulberrytech dot com>
- Subject: [xsl] Changing colors of eachother line
- From: Berger Dominik LE CH <dominik dot berger at cibasc dot com>
- Date: Tue, 14 Aug 2001 14:26:29 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
hi there
i ve got a problem, i will make out of a xml-file a html-file with xsl. in
the xml-file there are many fields, some of them have the value 'null'. i
will display each second field with the same color in the html output.
but i will not display the fields with the value 'null' so i cannot use the
position() function. now can you tell me a way how i cann toggle the
color-attribute for eachtime between two values??
i have here a example witch should show you what i'm looking for:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page SYSTEM "C:\Program
Files\Allaire\JRun\servers\default\test\portML.dtd">
<page>
<object name="Detail" class="com.cibasc.infoport.Method">
<data>
<row>
<field no="0" name="Name" class="java.lang.String">
Berger
</field>
<field no="1" name="Firstname"
class="java.lang.String">
null
</field>
<field no="2" name="Address"
class="java.lang.String">
45 Mainstreet
</field>
<field no="3" name="Phone"
class="java.lang.String">
++618992299222
</field>
<field no="4" name="city" class="java.lang.String">
null
</field>
<field no="5" name="novalue"
class="java.lang.String">
</field>
<field no="6" name="test" class="java.lang.String">
test
</field>
</row>
</data>
</object>
</page>
<?xml version="1.0" encoding="UTF-8"?>
<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="/object">
<HTML>
<HEAD>
</HEAD>
<BODY class="st">
<xsl:apply-templates select="data"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="data">
<table border="0" cellspacing="0" cellpadding="0">
<xsl:apply-templates select="row"/>
</table>
</xsl:template>
<xsl:template match="row">
<xsl:apply-templates select="field"></xsl:apply-templates>
</xsl:template>
<xsl:template match="field">
<xsl:if test="normalize-space(.) != 'null' and normalize-space(.)!=''">
<tr>
<td>
<xsl:attribute name="width">180</xsl:attribute>
<xsl:attribute name="valign">top</xsl:attribute>
<xsl:attribute name="color">
<xsl:call-template name="getColor">
<xsl:with-param name="color"
select="Blue"></xsl:with-param>
</xsl:call-template>
</xsl:attribute>
<xsl:value-of select="@name"></xsl:value-of></td>
<td>
<xsl:attribute name="width">520</xsl:attribute>
<xsl:attribute name="valign">top</xsl:attribute>
<xsl:attribute name="color">
<xsl:call-template name="getColor">
<xsl:with-param name="color"
select="Blue"></xsl:with-param>
</xsl:call-template>
</xsl:attribute>
<xsl:value-of
select="normalize-space(.)"></xsl:value-of></td>
</tr>
</xsl:if>
</xsl:template>
<xsl:template name="getColor">
<xsl:param name="color"/>
<xsl:choose>
<xsl:when test="$color = 'Blue'">Red</xsl:when>
<xsl:otherwise>Blue</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
The result should be something like this:
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="180" valign="top" color="Blue">Name</td>
<td width="520" valign="top" color="Blue">Berger</td>
</tr>
<tr>
<td width="180" valign="top" color="Red">Address</td>
<td width="520" valign="top" color="Red">45 Mainstreet</td>
</tr>
<tr>
<td width="180" valign="top" color="Blue">Phone</td>
<td width="520" valign="top" color="Blue">++618992299222</td>
</tr>
<tr>
<td width="180" valign="top" color="Red">test</td>
<td width="520" valign="top" color="Red">test</td>
</tr>
</table>
i hope you can help me, that would be great!
thanks and best regards
dominik berger
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list