Re: XML/XSLT for web templating
Uselessly personal, anecdotal tangent: XSL has forced me, more than any other language, to behave as a programmer. I would (and could) have lived my life without ever having to write a Recursive function. Having done so, I've never programmed anything the same since. -S On 10/8/07, Alessandro Bologna <alessandro.bologna@xxxxxxxxx> wrote: > Dear collegues, > > I was wondering if there is anybody on this list who could share > some experience (opinions are very welcome too) on using XML/XSLT > (2.0) as the templating technology for very large news/information > web sites, vs using a more common Java/JSP,/Velocity or Freemarker > solution. > > As a background information, and to better contextualize this > request, we have already implemented a prototype, and it's > beautifully working in production). > > In this implementation, contents are available as XML documents, in > the form of external feeds(Atom, RSS, PRISM etc) and RESTful web > services that access a JCR/JSR-170 repository. > Templates are basically XHTML documents, augmented with XML markups > that allow to navigate the content XML (using an XPATH style > addressing of the content XML elements) and to present specific > elements as well. A library of XSLT (2..0) rules is used to process > the templates, to access the XML using the document function and > finally to create the resulting XHTML documents. > > A minimalistic template may look like this: > <x:template name="article" target="browser"> > <html xmlns="http://www.w3.org/1999/xhtml" xmlns:x="http://foo.com/x"> > <head> > <title x:node="article/tout/headline"/> > </head> > <body> > <x:header/> > <h1 x:node="article/headline"/> > <div id="body"> > <x:render x:node="article/body"/> > </div> > <x:footer/> > </body> > </html> > </x:template> > > The transformation happens in pipelined stages, so that it's really > easy to render the XML in intermediate formats, and do the final > presentation(s) at the last stage. I forgot to mention that the > output can be targeted at different devices (such as pdas, > cellphones, desktop browsers etc) or media (RSS etc). > > I have been strenuously advocating this approach, because I see in it > a a lot of potential: > > 1. templates are XML documents, therefore they can be processed (meta- > templates) still using XSLT > 2. the XSLT implementation of the tag has easy access to the template > document and to the content document, so that it can, for instance, > provide a different presentation if inside a <h1> or inside a <title> > or a <div id="body"> > 3. it's really easy to author and validate these documents using > basically any tool (including dreamweaver, eclipse, XML tools etc). > 4. new presentation rules can be created without altering the > existing code (using import precedence and/or more specific matchers) > 5. The XSLT itself can be processed and validated still using XSLT > (meta-processing) > 6. XLST 2.0 provides a much better set of tools for generic > processing, modularity, data control and makes it a feasible task for > average programmers to maintain this code > > So, I have been advocating this choice, implemented the prototype, > and still, I face a huge resistance based on the "fame" of XSLT of > being: > > 1. Too slow (i proved it wrong already, but still, just yesterday > somebody was telling about Freemarker being 15 times faster than XSLT > at rendering docbook, and I know that Robert Koberg has something to > say about that... :) > 2. Too difficult because programmers only know imperative > programming, understand only imperative programming, and are willing > to learn only imperative programming > 3. Too unknown ("everybody knows JSP...") > 4. Too old ("XSLT is dead, or at least I heard so") > 5. Nobody uses it for this purpose (really? pre-cooked HTML from XSLT > is so unheard of?) > 6. Too hard to maintain ("it becomes very messy very soon") > 7. Too hard to read ("XML is not meant for programming..., #if () is > so much more readable") > > So the alternative is Velocity, Freemarker or JSP and an XML/Java > binding solution (such as JAXP), and this alternative is considered > more scalable, more robust and more flexible. In other words, the > push is for templates made of: > <%=article.headline %> (or <# or <@ depending on the poison that you > choose) . > > I apologize for this long email, and I realize that this may not be > the appropriate forum for such an inquiry (please list-owner feel > free to censor it if it's the case), but at this point I really need > (after months of useless advocacy on my side) some opinions and > experience and real world examples, if anybody has one to contribute. > > Best regards > Alessandro Bologna
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format