|
Subject: RE: [xsl] Problem With Different Colors for Alternate Rows From: "Schwartz, Rechell R, ALCAS" <rrschwartz@xxxxxxx> Date: Tue, 5 Nov 2002 16:43:29 -0500 |
Jeorg,
Thank you. Mode seems to be working ok, except for one thing -- in my
real XSLT (which is more complicated than the sample below), for certain
data elements (e.g., side dish) I search for multiple occurences of the
element and I concatenate them with commas as below. This is causing
confusion in the assessment of the position() function. It seems to
think I am looking for the position of the row, when I am really looking
for the position of this particular side dish. This confusion is causing
each side dish to print out on a new line instead of on a single line
with a comma-separated list. Is there any way to test if this side dish
is first or last w/o using the position() function (thus avoiding this
type of confusion)?
<xsl:template match="Side_Dish">
<xsl:if test="position() = 1">
<xsl:text disable-output-escaping="yes"><td
class="oddRowStyle">Side Dish:<td
class="oddRowStyle"></xsl:text>
</xsl:if>
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text
disable-output-escaping="yes"></td></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Thanks,
Rechell Schwartz
-----Original Message-----
From: Joerg Heinicke [mailto:joerg.heinicke@xxxxxx]
Sent: Tuesday, November 05, 2002 1:11 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Problem With Different Colors for Alternate Rows
Hello Rechell,
there is also a simple XSL way:
<xsl:template match="/Food_List">
<table>
<xsl:apply-templates select="Main_Food_List | Side_Dish | Desert"
mode="row"/>
</table>
</xsl:template>
<xsl:template match="*" mode="row">
<TR class="evenRowStyle">
<xsl:if test="position() mod 2 = 1">
<xsl:attribute name="class">oddRowStyle</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="."/>
</TR>
</xsl:template>
<xsl:template match="Main_Food_List">
<TD>Main Course:</TD>
<TD><xsl:value-of select="Main_Course"/></TD>
</xsl:template>
<xsl:template match="Side_Dish">
<TD>Side Dish:</TD>
<TD><xsl:value-of select="."/></TD>
</xsl:template>
<xsl:template match="Desert">
<TD>Desert:</TD>
<TD><xsl:value-of select="Fancy_Desert"/></TD>
</xsl:template>
Regards,
Joerg
Schwartz, Rechell R, ALCAS wrote:
> All,
>
> I am having difficulty programming a stylesheet that is supposed to
return the result set as a list of HTML rows in alternating colors.All
of the examples that I have seen address how to do this if every data
row is is derived from the same type of XML tag. But in my example, each
row may come from a completely different section of the XML. Following
is a sample XML similar to the one that I am using. Also, another
constraint is if any row is missing, it is inhibited, and the
alternating color rule must still be preserved. I have tried numerous
ways of passing parameters, but have been unable to modify the the row
count after a match was found ofr each item. Any help would be GREATLY
appreciated.
>
> Sample XML:
>
> <Food_List>
> <Main_Food_List>
> <Main_Course>
> Chicken
> </Main_Course>
> </Main_Food_List>
> <Side_Dish>
> Potatoes
> </Side_Dish>
> <Desert>
> <Fancy_Desert>
> Chocolate Truffles
> </Fancy_Desert>
> </Desert>
> </Food_List>
>
> Sample XSLT Stylesheet:
> <?xml version="1.0" ?>
> <xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
> <xsl:output method="html" indent="yes"/>
> <xsl:template match="/">
> <xsl:apply-templates select="Food_List/Main_Food_List/Main_Course"/>
> <xsl:apply-templates select="Food_List/Side_Dish"/>
> <xsl:apply-templates select="Food_List/Desert/Fancy_Desert"/>
>
> <xsl:template match="Main_Course">
> <TR><TD>Main Course:</TD><TD xsl:value-of select="."/></TD></TR>
> </xsl:template>
>
> <xsl:template match="Side_Dish">
> <TR><TD>Side Dish:</TD><TD xsl:value-of select="."/></TD></TR>
> </xsl:template>
>
> <xsl:template match="Fancy_Desert">
> <TR><TD>Desert:</TD><TD xsl:value-of select="."/></TD></TR>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
>
> Required HTML Output
> <TABLE>
> <TR><TD colspan="2">MENU</TD></TR>
> <TR><TD class="oddRowStyle">Main Dish:</TD><TD
class="oddRowStyle">Chicken</TD></TR>
> <TR><TD class="evenRowStyle">Side Dish:</TD><TD
class="oddRowStyle">Potatoes</TD></TR>
> <TR><TD class="oddRowStyle">Desert:</TD><TD
class="oddRowStyle">Chocolate Truffles</TR>
> </TABLE>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Problem With Different Co, Joerg Heinicke | Thread | Re: [xsl] Problem With Different Co, Joerg Heinicke |
| correction on Xslt example was RE: , bryan | Date | Re: [xsl] Word Highlighting, Mike Brown |
| Month |