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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Can i use apply-templates, JBryant | Thread | Re: [xsl] Can i use apply-templates, JBryant |
[xsl] Can't use any of the xdt func, chris | Date | Re: [xsl] decorator / wrapper desig, Wendell Piez |
Month |