xsl-list
[Top] [All Lists]

RE: newbie prob - Template and navigation confusion???

2005-02-03 11:52:57
It's not my only source of information no..

I think i've sorted it out now. There wasn't any kind of iteration, so the condition was being applied to an element rather than individual rows in an element. Using the <xsl:for-each select="PLAYER_ROW"> seems to have solved the problem?

Cheers!

From: "Michael Kay" <mike(_at_)saxonica(_dot_)com>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: RE: [xsl] newbie prob - Template and navigation confusion???
Date: Thu, 3 Feb 2005 18:22:33 -0000

> That makes perfect sense, except i'm not too sure how to
> apply a condition
> that way. I'm only aware of xsl:choose, xsl:when and
> xsl:otherwise logic.

I hope you're not using this list as your only source of information...

> How can a condition be applied in a template match?

There are some examples at
http://www.w3.org/TR/xslt#patterns

Michael Kay
http://www.saxonica.com/


>
> >From: "Michael Kay" <mike(_at_)saxonica(_dot_)com>
> >Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> >To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
> >Subject: RE: [xsl] newbie prob - Template and navigation confusion???
> >Date: Thu, 3 Feb 2005 14:39:32 -0000
> >
> >Instead of writing
> >
> >if (condition)
> >   apply-templates select=X mode=A
> >else
> >   apply-templates select=X mode=B
> >
> >template match=X mode=A
> >
> >template match=X mode=B
> >
> >write instead:
> >
> >   apply-templates select=X
> >
> >template match=X[condition]
> >
> >template match=X[not(condition)]
> >
> >That is: let the template rules do the work.
> >
> >You haven't shown your source document but it seems a little
> odd. Usually
> >documents with a ROWSET and ROW are rather flat, they tend
> only to have one
> >level of element below the ROW. You appear to have
> >
> >TEAM/TEAM_ROW/NAME/NAME_ROW/SALARY
> >
> >within each ROW. Can each of these elements only appear once
> in each row?
> >If
> >so, why all the nesting? But if not, your stylesheet logic
> looks wrong,
> >because the apply-templates processes all the elements in
> the set, while
> >the
> >when condition tests if ANY element satisfies the condition.
> (But it's
> >possible this is what you intended, who knows?)
> >
> >Michael Kay
> >http://www.saxonica.com/
> >
> >
> >
> > > -----Original Message-----
> > > From: Nick Roberts [mailto:nick_roberts5(_at_)hotmail(_dot_)com]
> > > Sent: 03 February 2005 13:44
> > > To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> > > Subject: [xsl] newbie prob - Template and navigation confusion???
> > >
> > > I'm quite new the XSL and what i've have produced so far has
> > > taken some
> > > considerable time. I'm slowly getting used to the way
> > > templates work but i'm
> > > still having some probs with my code.
> > >
> > > In the below code, there is a 'when' condition which states
> > > that the when
> > > the salary is greater than 30000, match the 'dark' template..
> > > which sets the
> > > background colour of a table-box to grey.
> > >
> > > Although this sort-of works, it seems to pick random boxes to
> > > turn grey,
> > > some which aren't above 30000, and others which are. Also,
> > > some which are
> > > over 30000 aren't turned grey??
> > >
> > > I presume it must be something to do with the way i'm
> > > navigating through the
> > > xml document.
> > >
> > > Can anyone spot any problems with the code?
> > >
> > > Cheers, Nick
> > >
> > >
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > >
> > >   <xsl:template match="page">
> > >     <html>
> > >       <head><title>Footy stuff</title></head>
> > >        <body>
> > >         <h1>Football Report</h1><hr/>
> > >          <xsl:for-each select="ROWSET/ROW">
> > >           <h2><xsl:apply-templates
> > > select="TEAM/TEAM_ROW/TEAMNAME"/></h2>
> > >           <h3>Stadium: <xsl:apply-templates
> select="STADIUM"/></h3>
> > >            <table border="1">
> > >             <th><b>Last Name</b></th><th><b>Salary</b></th>
> > >             <xsl:choose>
> > >              <xsl:when
> > > test="TEAM/TEAM_ROW/NAME/NAME_ROW/SALARY&gt;'30000'">
> > >              <xsl:apply-templates
> > > select="TEAM/TEAM_ROW/NAME/NAME_ROW"
> > > mode="dark"/>
> > >              </xsl:when>
> > >              <xsl:otherwise>
> > >              <xsl:apply-templates
> > > select="TEAM/TEAM_ROW/NAME/NAME_ROW"
> > > mode="light"/>
> > >             </xsl:otherwise>
> > >             </xsl:choose>
> > >     </table>
> > >           <xsl:call-template name="break"/>
> > >          </xsl:for-each>
> > >       </body>
> > >     </html>
> > > </xsl:template>
> > >
> > >   <xsl:template match="NAME_ROW" mode="dark">
> > >    <tr>
> > >     <td><xsl:value-of select="LAST_NAME"/></td><td
> > > bgcolor="gray"><xsl:value-of select="SALARY"/></td>
> > >    </tr>
> > >   </xsl:template>
> > >
> > >   <xsl:template match="NAME_ROW" mode="light">
> > >    <tr>
> > >     <td><xsl:value-of select="LAST_NAME"/></td><td><xsl:value-of
> > > select="SALARY"/></td>
> > >    </tr>
> > >   </xsl:template>
> > >
> > >   <xsl:template name="break">
> > >    <hr/>
> > >   </xsl:template>
> > >
> > > </xsl:stylesheet>
> > >
> > >
> > >
> > >
> --~------------------------------------------------------------------
> > > XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
> > > To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> > > or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
> > > --~--
> > >
> >
> >
> >--~------------------------------------------------------------------
> >XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> >or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
> >--~--
> >
>
>
>
> --~------------------------------------------------------------------
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
> --~--
>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>