[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Can i use apply-templates to match a xsl:template

Subject: Re: Can i use apply-templates to match a xsl:template eleme nt?
From: JBryant@xxxxxxxxx
Date: Fri, 18 Mar 2005 11:19:56 -0600
xsl apply templates match
<xsl:apply-templates match="releasepage"/>

should be 

<xsl:apply-templates select="releasepage"/>

Rushing too much today. Sorry.

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




JBryant@xxxxxxxxx 
03/18/2005 11:02 AM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

Subject
Re:  Can i use apply-templates to match a xsl:template eleme nt?






Once you do an include, the templates in the included stylesheets are 
available just like they would be if they were in the calling template. So 

you can either use apply-templates or call named templates (or both).

So if releases.xsl contains a template like this:

<xsl:tempate match="releasepage">
  <!-- Do something -->
</xsl:template>

Then the base stylesheet could contain a line like this:

<xsl:apply-templates match="releasepage"/>

HTH

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




Chris <phatfish@xxxxxxxxx> 
03/18/2005 10:28 AM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

Subject
Re:  Can i use apply-templates to match a xsl:template eleme nt?






I did try doing "dynamic" includes first, ie. including other
stylesheets through a base layout  -- rather than adding a base layout
to the other stylesheets.

It seemed however from previous comments here, that including a base
or common stylesheet (layout.xsl) into the others to create a layout
was the best way to do it.

Im just a bit stuck on how to apply the templates defined in the
individual stylesheets -- like the "releases" one with the loop above
-- to the common layout. I assume i can be done :)

On Fri, 18 Mar 2005 10:05:50 -0600, JBryant@xxxxxxxxx <JBryant@xxxxxxxxx> 
wrote:
> Would  xsl:include do the trick?
> 
> You can write a stylesheet that includes both of the stylesheets you
> reference here and build a document with the ordering you want. You 
might
> even be able to read the files to include from the elements of the
> document. So far, I've only needed to do static includes, so I can't say
> for sure. You should be able to specify which stylesheets to use via
> parameters, too.
> 
> Just a thought.
> 
> Jay Bryant
> Bryant Communication Services
> (presently consulting at Synergistic Solution Technologies)
> 
> Chris <phatfish@xxxxxxxxx>
> 03/18/2005 09:52 AM
> Please respond to
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 
> To
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> cc
> 
> Subject
> Re:  Can i use apply-templates to match a xsl:template eleme nt?
> 
> Thats the xml data, its a work in progress, so dont be too harsh on it
> :) Its generated and transformed in PHP5 to output HTML.
> 
> releases is the data for the loop, releasepage is whats being matched
> by my xsl:template element at the moment.
> 
> <?xml version="1.0"?>
> <page>
>   <header stylesheet="header.xsl"/>
>   <body stylesheet="releases.xsl">
>     <releasepage>
>       <releases>
>         <row iteration="0">
>           <date>2005-01-01</date>
>           <name>Release Name 1</name>
>         </row>
>         <row iteration="1">
>           <date>2005-01-02</date>
>           <name>Release Name 2</name>
>         </row>
>         <row iteration="2">
>           <date>2005-01-03</date>
>           <name>Release Name 3</name>
>         </row>
>         <row iteration="3">
>           <date>2005-01-04</date>
>           <name>Release Name 4</name>
>         </row>
>         <row iteration="4">
>           <date>2005-01-05</date>
>           <name>Release Name 5</name>
>         </row>
>         <row iteration="5">
>           <date>2005-01-06</date>
>           <name>Release Name 6</name>
>         </row>
>       </releases>
>     </releasepage>
>   </body>
>   <footer stylesheet="footer.xsl"/>
> </page>
> 
> Thanks for the comment btw Jay, i didnt notice another reply untill i
> had sent the mail before :)
> 
> On Fri, 18 Mar 2005 10:29:24 -0500, Maria Amuchastegui
> <mamuchastegui@xxxxxxxxxxx> wrote:
> > Can you post the XML data?
> >
> > Maria
> >
> > -----Original Message-----
> > From: Chris [mailto:phatfish@xxxxxxxxx]
> > Sent: Friday, March 18, 2005 10:19 AM
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Re:  Can i use apply-templates to match a xsl:template
> eleme
> > nt?
> >
> > Hi thanks, i did look at call-template before in my testing but
> discarded it
> > because it didnt output my foreach loop in the template that i was
> calling.
> >
> > But it does seem thats what i should be using, although im not sure 
why
> the
> > loop isnt being outputted -- and reading the specifications didnt 
really
> > make it any clearer :)
> >
> > Bellow was the "main" template that i was hoping to output, it just
> contains
> > a test for-each loop.
> > Is it possible to have the template im calling output its content as i
> > wanted?
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:transform version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:output method="html"/>
> >
> > <xsl:include href="layout.xsl"/>
> > <xsl:include href="header.xsl"/>
> >
> > <xsl:template match="releasepage" name="main" >
> >         <div>A table for the main template</div>
> >         <table>
> >           <tbody>
> >             <xsl:for-each select="releases/row">
> >               <tr>
> >                 <xsl:for-each select="date">
> >                   <td>
> >                     <xsl:apply-templates/>
> >                   </td>
> >                 </xsl:for-each>
> >                 <xsl:for-each select="name">
> >                   <td>
> >                     <xsl:apply-templates/>
> >                   </td>
> >                 </xsl:for-each>
> >               </tr>
> >             </xsl:for-each>
> >           </tbody>
> >         </table>
> > </xsl:template>
> >
> > </xsl:transform>
> >
> > On Fri, 18 Mar 2005 08:45:45 -0500, Maria Amuchastegui
> > <mamuchastegui@xxxxxxxxxxx> wrote:
> > > You could do that with a named template:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?> <xsl:transform version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > >         <xsl:output method="html"/>
> > >         <xsl:template match="page">
> > >                 <html>
> > >                         <head>
> > >
> > >                 </head>
> > >                         <body>
> > >                                 <div id="header">
> > >                                         <xsl:call-template
> name="header"/>
> > >                                 </div>
> > >                                 <div id="main">
> > >                                         <xsl:call-template
> name="main"/>
> > >                                 </div>
> > >                         </body>
> > >                 </html>
> > >         </xsl:template>
> > >
> > >         <xsl:template name="header">
> > >                 <!-- do stuff here -->
> > >         </xsl:template>
> > >
> > >         <xsl:template name="main">
> > >                 <!-- do stuff here -->
> > >         </xsl:template>
> > >
> > > </xsl:transform>
> > >
> > >
> > > -----Original Message-----
> > > From: Chris [mailto:phatfish@xxxxxxxxx]
> > > Sent: Friday, March 18, 2005 8:39 AM
> > > To: XSL List
> > > Subject:  Can i use apply-templates to match a xsl:template
> element?
> > >
> > > I would like the output of a xsl:template element to appear in a
> > > specific location in stylesheet. Can i use apply-templates to match
> > > the template i want and have it output there?
> > >
> > > eg:
> > > <?xml version="1.0" encoding="UTF-8"?> <xsl:transform version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > > <xsl:output method="html"/>
> > >
> > > <xsl:template match="page">
> > >         <html>
> > >                 <head>
> > >
> > >                 </head>
> > >                 <body>
> > >                         <div id="header"><xsl:apply-templates
> > > select="header"/></div>
> > >                         <div id="main"><xsl:apply-templates
> > > select="main"/></div>
> > >                 </body>
> > >         </html>
> > > </xsl:template>
> > >
> > > </xsl:transform>
> > >
> > > This file will be included into my stylesheets and used as a base
> > > layout. I would like the xsl:template with name="main" to output 
into
> > > the location above. But im not sure if this is allowed, does select
> > > only relate an element in the source xml document?
> > >
> > > I hope you can see what im trying to do, Thanks :)

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.