[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Can i use apply-templates to match a xsl:template eleme nt?
Subject: Re: [xsl] Can i use apply-templates to match a xsl:template eleme nt?
From: Chris <phatfish@xxxxxxxxx>
Date: Fri, 18 Mar 2005 16:28:10 +0000
|
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: [xsl] 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: [xsl] 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: [xsl] 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 |
- Re: [xsl] Can i use apply-templates to match a xsl:template eleme nt?, (continued)
- Chris - Fri, 18 Mar 2005 15:19:06 +0000
- Maria Amuchastegui - Fri, 18 Mar 2005 10:29:24 -0500
- Chris - Fri, 18 Mar 2005 15:52:28 +0000
- JBryant - Fri, 18 Mar 2005 10:05:50 -0600
- Chris - Fri, 18 Mar 2005 16:28:10 +0000 <=
- JBryant - Fri, 18 Mar 2005 11:02:11 -0600
- JBryant - Fri, 18 Mar 2005 11:19:56 -0600
- Chris - Sat, 19 Mar 2005 13:54:20 +0000
- Aron Bock - Sat, 19 Mar 2005 16:17:51 +0000
|