xsl-list
[Top] [All Lists]

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

2005-03-18 09:43:41
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(_at_)gmail(_dot_)com] 
Sent: Friday, March 18, 2005 10:52 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)to(_dot_)epost(_dot_)ca> wrote:
Can you post the XML data?

Maria

-----Original Message-----
From: Chris [mailto:phatfish(_at_)gmail(_dot_)com]
Sent: Friday, March 18, 2005 10:19 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)to(_dot_)epost(_dot_)ca> 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(_at_)gmail(_dot_)com]
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 :)

--~-----------------------------------------------------------------
- XSL-List info and archive:  
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~-----------------------------------------------------------------
- XSL-List info and archive:  
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--