RE: [xsl] more on Using apply-templates instead of for-each?

Subject: RE: [xsl] more on Using apply-templates instead of for-each?
From: "Kathy Burke" <Kathy_Burke@xxxxxxxxx>
Date: Tue, 15 Apr 2003 16:55:17 -0400
Like magic! When I switched from <xsl:apply-template
select="numbered_list/listitems"> to
<xsl:apply-templates/> all my other formatting appeared! I think light is
finally dawning...thank you for the tutoring.

Kathy

-----Original Message-----
From: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx]
Sent: Tuesday, April 15, 2003 4:05 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] more on Using apply-templates instead of for-each?


Hi again Kathy,

At 02:09 PM 4/15/2003, you wrote:
>***I'm just trying to put each numbered <listitem> (child of
>safety/numbered_list) into a table row***
>
><xsl:template match="safety">
>         <table border="1" width="100%" cellpadding="4">
>                 <tr bgcolor="red" valign="bottom">
>
>                         <th align="left">
>
>                                 <h3>SAFETY</h3>
>                         </th>
>                 </tr>
>                         <xsl:for-each select="numbered_list/listitem">
>
>                 <tr>
>                         <td>
>                                 <xsl:number level="multiple" format="1. "
>count="listitem" />
><xsl:value-of select="." />
>                         </td>
>                 </tr>
>                         </xsl:for-each>
>                 </table>
>                 <br />
>         </xsl:template>

Fully templated version:

<xsl:template match="safety">
   <table border="1" width="100%" cellpadding="4">
     <tr bgcolor="red" valign="bottom">
       <th align="left">
         <h3>SAFETY</h3>
       </th>
     </tr>
     <xsl:apply-templates select="numbered_list/listitem"/>
     <!-- depending on your source data you may not need the 'select' 
attribute -->
   </table>
   <br />
</xsl:template>

<xsl:template match="listitem">
<!-- again depending, you may want to qualify this as
      match="numbered_list/listitem"
      and/or use a mode -->
   <tr>
     <td>
       <xsl:number level="multiple" format="1. " count="listitem" />
       <xsl:apply-templates/>
       <!-- instead of saying value-of we'll let the built-in templates do 
it -->
     </td>
   </tr>
</xsl:template>

As you can see, in this simple case there's no appreciable gain in clarity 
or power; but as your source and processing get more complex, templates 
give us the flexibility we will need. (Think about what happens as your 
source data gets loose and variable.)

Cheers,
Wendell


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
   Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


 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