Noooooo - XML/XSL is too slow / fugly to actually use day to day (IMHO)

I'd advise you to check out SiteMesh - it's built for this exact purpose!

http://www.opensymphony.com/sitemesh

Quite simply you provide JSP based decorators which are mapped to URIs. 

Download and install the sample app, it's the only way to learn about it.

$10 says you're using it within a week ;)

-mike

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of Jeff Schnitzer
> Sent: Friday, May 11, 2001 7:12 AM
> To: Orion-Interest
> Subject: RE: Standar Template
> 
> 
> I've iterated through several solutions to this problem and can offer
> some advice:
> 
> I started out using option 1 as you describe.  I quickly noticed that
> *every* page contains the definition of the layout and look of the
> website.  What if I wanted to put the navigation bar on the right
> instead of the left?  I would have to modify *every single page* in my
> website.  Yuck.
> 
> 
> My next step was to put the "container" code in separate head/foot JSP
> files and @include them like this:
> 
> <%@ include file="head_stuff.jsp" %>
> <p>
>       My content
> </p>
> <%@ include file="foot_stuff.jsp" %>
> 
> Which at least puts all the look and feel stuff in a handful of places.
> But my site has different templates for the "logged in" user vs the
> welcome/signup screens and a few other special cases as well.  It
> quickly became a pain to keep track of all the different headers and
> footers, and in any case opening tags in one file and closing them in
> another really sucks.  Yuck.
> 
> 
> Next step was option 2 as you describe.  I created
> "template_inside.jsp", "template_outside.jsp", etc which contain all the
> layout structure and then include the appropriate content file based on
> a parameter.  Since I'm using an MVC framework, this is pretty easy to
> do.
> 
> This is the best option I've described so far, and it works.  But it's
> not very sophisticated, and it doesn't make having multiple layers very
> easy.  Fortunately I'm working on my own time, so now I'm moving on to
> the fourth generation of my website content:
> 
> 
> This sort of templating is where XSLT really shines.  Rather than
> creating templating layers from the top down, XSLT allows you to start
> at the bottom and build up, successively transforming the input.
> Wrapping (in a layout template) is just one kind of transformation.
> Each step has no need to know anything specific about the previous step;
> it's all just based on transformation rules.
> 
> I'm still near the bottom of the XSLT learning curve, but I'm already
> amazed at how powerful it is.  It's also a lot easier to pick up than I
> had expected from first looking at a sample.
> 
> The only problem with using XSLT in a web application is the lack of
> framework support.  Cocoon did not make a favorable impression on me (to
> say the least).  I wanted something that provides a simple MVC paradigm
> like WebWork or (not-so-simple) Struts but uses XSLT for the view
> templating.  So I (and a friend) sat down and wrote it.  Tomorrow we'll
> send out a link to the sourceforge site; we're still working on the
> documentation and examples.
> 
> 
> In summary:  For a simple approach, Option 2 as you describe isn't bad.
> For (IMNSHO) a more elegant and powerful approach, it's worth looking
> into XSLT.
> 
> Jeff Schnitzer
> [EMAIL PROTECTED]
> http://www.similarity.com (still using WebWork, but not for long :-)
> 
> 
> > -----Original Message-----
> > From: Dave Ford [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, May 10, 2001 12:17 PM
> > To: Orion-Interest
> > Cc: Dan Tharp
> > Subject: Standar Template
> > 
> > 
> > I want to create a web app in which every page on the site 
> > has a standard
> > header along the top and a standard menu along the left edge (a pretty
> > standard thing).
> > 
> > I came up with 2 ways of doing this:
> > 
> > 1. Use a table tag and jsp:include tags on EVERY page:
> > 
> > <table>
> >   <tr>
> >     <td><jsp:include page="standardHeader.jsp"/></td>
> >   </tr>
> >   <tr>
> >     <td colspan="2">
> >     <table>
> >       <tr>
> >         <td valign="top"><jsp:include page="/menu.jsp" /></td>
> >         <td valign="top">
> >          THIS IS WHERE THE PAGE-SPECIFIC CONTENT (i.e. the body)*
> >         </td>
> >       </tr>
> >     </table>
> >     </td>
> >   </tr>
> > </table>
> > 
> > 2. Invert the above solution to create one master template 
> > (or controller)
> > and have the content page name passed in as a parameter. Here 
> > would be the
> > master template-controller page:
> > 
> > <table>
> >   <tr>
> >     <td><jsp:include page="standardHeader.jsp"/></td>
> >   </tr>
> >   <tr>
> >     <td colspan="2">
> >     <table>
> >       <tr>
> >         <td valign="top"><jsp:include page="/menu.jsp" /></td>
> >         <td valign="top">
> >          <jsp:include 
> > page="<%=request.getParameter("contentPage")%>" />*
> >         </td>
> >       </tr>
> >     </table>
> >     </td>
> >   </tr>
> > </table>
> > 
> > The key difference between these two architectures are best 
> > understood by
> > looking at the 2 lines with the * at the end. Also, in option 
> > 2, there is
> > only one copy of the above code. In option 1, there is one 
> > copy "per content
> > page"
> > 
> > Q1: Does anyone have any preference between options 1 and 2?
> > Q2: Is there a better way of achieving this result?
> > Q3: Do either have any negetive drawback I need to consider? 
> > (I will be
> > converting an entire site)
> > 
> > By the way, I'm currently achieving this effect VERY easily 
> > using good old
> > client-side html frames. But due to popular demand, framse must go.
> > 
> > Dave Ford
> > Smart Soft - The Java Training Company
> > http://www.smart-soft.com
> > 
> > 
> > 
> 
> 

Reply via email to