[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: Maria Amuchastegui <mamuchastegui@xxxxxxxxxxx>
Date: Fri, 18 Mar 2005 11:43:41 -0500
xsl include header
Is this what you had in mind?

<?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="/">
		<html>
			<head>
				<title/>
			</head>
			<body>
				<div>A table for the main template</div>
				<table>
					<tbody>
						<xsl:apply-templates
select="//row"/>
					</tbody>
				</table>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="//row">
		<tr>
			<td>
				<xsl:value-of select="date"/>
			</td>
			<td>
				<xsl:value-of select="name"/>
			</td>
		</tr>
	</xsl:template>
</xsl:transform>
 

-----Original Message-----
From: Chris [mailto:phatfish@xxxxxxxxx] 
Sent: Friday, March 18, 2005 10:52 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
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.