This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Streamline xslt


Hi,

Why not use xsl:include?

I like to keep all of my xsl:includes, variables and params in a global
definitions XSL. This is included in each primary/main XSLT. An example of a 2
column layout:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <!--
basic_2col.xsl  - A basic 2 column layout
===========
This is a primary stylesheet. Each primary stylesheet includes
global_definitions.xsl,
which in turn includes the common XSL pages. Much of the layout can be affected
just
by changing the /css/project.css. When a page is requested/generated, a source
XML
(always /WEB-INF/styling/site.xml) is transformed against a primary XSL -->
  <!-- *********** GLOBAL DEFINITIONS ************ -->
  <!-- global_definitions.xsl includes the common XSL templates, gathers
parameters sent in
from  the server and sets up common global variables. -->
  <xsl:include href="global_definitions.xsl"/>
  <xsl:variable name="root_relative" select="'false'"/>
  <!-- match the document root to start setting up the HTML page structure -->
  <xsl:template match="/">
    <html>
      <!-- *********** HTML HEAD ************ -->
      <!-- call to head.xsl to set up the HTML HEAD -->
      <xsl:call-template name="head"/>
      <body onload="{$body_onload_call}">
        <!-- *********** BANNER (top of the page) ************ -->
        <!-- call to banner.xsl to set up the top part of the page -->
        <xsl:call-template name="banner"/>
        <!-- *********** START MAIN LEFT COLUMN ************ -->
        <!-- ======================================= -->
        <div id="leftcol">
          <!-- ======== NAVIGATION? ======== -->
          <!-- if the /WEB-INF/styling/site.xml has it's /config/@nav_col set
to... -->
          <xsl:if test="$nav_col='narrow_left' or $nav_col='tabs_narrow_left'">
             <xsl:call-template name="nav"/>
          </xsl:if>
          <!-- ======== LEFT COLUMN CONTENT ======== -->
          <!-- applying templates on the folder's center column content and then
the
              page's center column content. The match happens in find_xml.xsl.
Normally,
              find_xml.xsl does not need to be altered. After the XML file is
found it proceeds
              to the article.xsl template which you might want to alter.-->
          <div class="floater">
            <xsl:apply-templates
select="$folder_nodeset/col[@type='narrow_left']" mode="main_content"/>
            <xsl:apply-templates select="$page_nodeset/col[@type='narrow_left']"
mode="main_content"/>
          </div>
          <br clear="all"/>
        </div>
        <!-- ======================================= -->
        <!-- *********** END MAIN RIGHT COLUMN ************ -->
        <!-- *********** START MAIN CENTER COLUMN ************ -->
        <!-- ======================================= -->
        <div id="centercol2left">
          <!-- ======== SNAIL TRAIL ? ======== -->
          <!-- Does the current page's folder properties indicate there should
be a snailtrail? -->
          <xsl:if test="$folder_nodeset/@snailtrail='true'">
            <xsl:call-template name="snailtrail"/>
          </xsl:if>
          <!-- ======== PAGER TOP ? ======== -->
          <!-- Does the current page's folder properties indicate there should
be
              a pager (i.e ' prev 1 2 3 n next ') above the content? -->
          <xsl:if test="$folder_nodeset/@pager='true'">
            <br clear="all"/>
            <xsl:call-template name="pager"/>
          </xsl:if>
          <!-- ======== PRINT FRIENDLY ======== -->
          <!-- Does the current page's properties indicate there should be a
print friendly link
              showing on the page? -->
          <xsl:if test="$page_nodeset/@print_friendly='true'">
            <br clear="all"/>
            <xsl:call-template name="pf_link"/>
          </xsl:if>
          <!-- ======== NAVIGATION? ======== -->
          <!-- if the /WEB-INF/styling/site.xml has it's /config/@nav_col set
to...  -->
      	<xsl:if test="$nav_col='wide_center'">
      		<xsl:call-template name="nav"/>
      	</xsl:if>
          <!-- ======== CENTER COLUMN CONTENT TABLE OF CONTENTS? ======== -->
          <!-- Does the current page's properties indicate there should be a
table of contents? -->
          <xsl:if test="$page_nodeset/@toc='true'">
            <xsl:call-template name="toc"/>
          </xsl:if>
          <!-- ======== CENTER COLUMN CONTENT ======== -->
          <!-- applying templates on the folder's center column content and then
              the page's center column content. The match happens in
find_xml.xsl.
              Normally, find_xml.xsl does not need to be altered. After the XML
file is
              found it proceeds to templates which you might want to alter -->
          <xsl:apply-templates select="$folder_nodeset/col[@type='wide_center']"
mode="main_content"/>
          <xsl:apply-templates select="$page_nodeset/col[@type='wide_center']"
mode="main_content"/>
          <!-- ======== FOLDER INDEXER ======== -->
          <!-- Does the current page's folder properties indicate there should
be a
              pager (i.e ' prev 1 2 3 n next ') below the content? [same as
above] -->
          <xsl:if test="$folder_nodeset/@index='true'">
            <xsl:call-template name="indexer"/>
          </xsl:if>
          <!-- ======== PAGER BOTTOM ? ======== -->
          <!-- Does the current page's folder properties indicate there should
be a
              pager (i.e ' prev 1 2 3 n next ') below the content? [same as
above] -->
          <xsl:if test="$folder_nodeset/@pager='true'">
            <br clear="all"/>
            <xsl:call-template name="pager"/>
          </xsl:if>
          <!-- ======== CENTER COLUMN CONTENT METADATA? ======== -->
        <!-- Does the current page's properties indicate there should be a
metadata
                  showing on the page? -->
        <xsl:if test="$page_nodeset/@metadata='true'">
          <xsl:call-template name="metadata"/>
        </xsl:if>
          <br clear="all"/>
        </div>
        <!-- ======================================= -->
        <!-- *********** END MAIN CENTER COLUMN ************ -->
        <br clear="all"/>
        <xsl:call-template name="footer"/>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>






> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Geoff
> Sent: Wednesday, September 25, 2002 10:26 AM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] Streamline xslt
>
>
> I love using XSLT because I can expose my web pages as xml and use xslt
> to transform the xml into html or something else like wml. The
> presentation is cleanly separated from content.
>
> The problem I see is if I need to change the presentation. I'm sure
> someday at some point someone will say let's give the Website a new
> look. Each "page" has a php script that either points to an xml file or
> creates xml on the fly, then points to an xsl file and passes this to
> the Sablotron processor. To change the site design I have to update each
> xsl file in the site.The html is the same for each xsl stylesheet except
> the part where the xsl code lives.So ideally I would divide the file
> into header.inc, the xsl part and footer.inc.
>
> The first thought I had was use includes. Php includes won't work
> because the first thing the Sablotron processor sees is <?php //php code
> ?>. I assume the same problem occurs with Apache includes.
> XSL includes must be well formed xml documents so that wouldn't work
> either.
>
> Any suggestions?
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]