Subject: RE: [xsl] controller stylsheet. performance, best practices question From: "Michael Kay" <mhk@xxxxxxxxx> Date: Wed, 23 Apr 2003 09:04:49 +0100 |
An alternative you might consider is the Novatchev "dynamic templates" method. Change <xsl:template name="xyz"> to <xsl:template match="xyzPage" mode="switch"> <xsl:param name="$current-node"/> Create an element <xyz/> (e.g. in a document switch.xml) Change <xsl:choose> <xsl:when test="$p='xyz'"> <xsl:call-template name="xyzPage"/> etc. etc. to <xsl:apply-templates select="document('switch.xml')/switch/*[name()=$p]"> <xsl:with-param name="current-node" select="."/> </xsl:apply-templates> For greater efficiency, use keys. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Terence Kearns > Sent: 23 April 2003 07:46 > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] controller stylsheet. performance, best > practices question > > > In an application I'm building, I've found myself applying an MVC > pattern to how I call templates. I have once stylesheet used > by all my > web-based server scripts (PHP scripts). This website then calls > different templates based on the context of the script. > Here is the script, questions to follow: > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet > version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <!-- import templates implementing dynamic content --> > <xsl:import href="xsl-inc_finder.xsl" /> > <xsl:import href="xsl-inc_subjects.xsl" /> > <xsl:import href="xsl-inc_requirements.xsl" /> > <xsl:import href="xsl-inc_listing.xsl" /> > <xsl:import href="xsl-inc_login.xsl" /> > > <!-- set context used by the controller --> > <xsl:param name="op" select="'<?php echo @$_GET["op"]; ?>'" /> > > <!-- BEGIN MAIN PAGE TEMPLATE--> > <xsl:template match="/"> > <!-- blah blah blah. masses of literal content > goes here --> > <!-- CALLS TO THE MAIN CONTENT BEGIN HERE --> > <xsl:choose> > <xsl:when test="$op = 'finder'"> > <xsl:call-template name="finderPage" /> > </xsl:when> > <xsl:when test="$op = 'subjects'"> > <xsl:call-template name="subjectsPage" /> > </xsl:when> > <xsl:when test="$op = 'login'"> > <xsl:call-template name="loginPage" /> > </xsl:when> > </xsl:choose> > <!-- CALLS TO THE MAIN CONTENT END HERE --> > <!-- blah blah blah. masses of literal content > goes here --> > </xsl:template> > <!-- END MAIN PAGE TEMPLATE--> > > </xsl:stylesheet> > > > > Functionally, this appoach seems to work well for me. My > questions is: Is taking this sort of approach prone to big > performance problems? I can see that in many cases, most of > the templates imported at the top > of the style sheet will not even be used. They can't be > included on the > fly because they need to be top-level (can't be nested inside IF or > CHOOSE).* > > Any other observations about the merits of this approach appreciated. > > cheers. > > * I could probably use PHP code to include it on the fly, but > I want to > avoid doing so because I've made a rule for myself not to use > server-side code embedded in the stylesheet. I've done so in > the param > of this example for purposes of clarity, normally I would > send them to > the processor directly from the PHP function call. > > > -- > Terence Kearns: Web Developer > University of Canberra: +61 2 6201 5516 > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] controller stylsheet. per, Terence Kearns | Thread | Re: [xsl] controller stylsheet. per, Terence Kearns |
[xsl] Tail recursion (WAS: Grouping, Conal Tuohy | Date | RE: [xsl] concatenated key, David . Pawson |
Month |