Subject: Re: [xsl] Multiple/conditional import problem From: Martynas Jusevicius <martynas.jusevicius@xxxxxxxxx> Date: Thu, 26 May 2011 16:11:47 +0200 |
Thanks Dave! The properties will be usually grouped into some classes - and then one stylesheet per class. I think for now I'll just import those specific stylesheets I've developed myself into default.xsl, ant figure out the pre-processing step later. Usually specific stylesheet (image.xsl) imports general one (default.xsl), however in this case it would be the way around - but it makes sense here? Can you take a look at the pseudo-code below just to make sure I got it right: default.xsl: <xsl:imports href="image.xsl"/> <xsl:template match="property"> <dt> <xsl:value-of select="@name"/> </dt> <dd> <xsl:apply-templates select="value"/> <xsl:apply-imports/> </dd> <xsl:template> <xsl:template match="property/value"> <xsl:value-of select="."/> </xsltemplate> image.xsl: <xsl:template match="property[@name = 'image']/value"> <img src="{.}"/> <xsl:template> Do I need <xsl:apply-templates select="value"/> in default.xsl or will it be called automatically if <xsl:apply-imports/> fails to find match in image.xsl? On Thu, May 26, 2011 at 3:19 PM, David Carlisle <davidc@xxxxxxxxx> wrote: > On 26/05/2011 13:57, Martynas Jusevicius wrote: >> >> Therefore in general I cannot manually include the references in >> default.xsl. Unless I pre-process it when a new specific stylesheet >> arrives... > > OK then yes. > > However it depends on how much customisation you want. > If you allow each property to have its own stylesheet then that's a lot of > power, it could reformat the entire document, and to get that power you'd > need to do as you say and arrange a processing step that builds the > stylesheet as required. > > however if you want to constrain things more then you could customise things > based on included input documents rather than stylesheets, eg using the > collection() function to pull in all xml files in a directory them... > > make a heading green unless a customisation sets a different color > > <xsl:variable name="custom"> > <xsl:copy-of select="collection(....)"/> > </xsl:variable> > <xsl:key name="custom" match="c" use="@x"/> > > <xsl:template match="property"> > <dt style="color:{ > (key($custom,concat(.':color'),$custom),'green')[1]}" >> > <xsl:value-of select="."/> > </dt> > > > then > > <property>foo</property> > > will come out as > <dt style="color:green">foo</dt> > > unless somewhere in an xml file pulled in by the collection() function there > is an element of the form > > <c x="foo:color">red</c> > > in which case > > <property>foo</property> > > would come out as > > <dt style="color:red">foo</dt> > > this can work well for simple customisation, but if you start to need > conditional logic etc, it's probably simpler to go back to allowing full > xslt, whiich gets you back to where you started. > > > David > > > > > ________________________________________________________________________ > The Numerical Algorithms Group Ltd is a company registered in England > and Wales with company number 1249803. The registered office is: > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. > > This e-mail has been scanned for all viruses by Star. The service is > powered by MessageLabs. > ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Multiple/conditional impo, David Carlisle | Thread | Re: [xsl] Multiple/conditional impo, David Carlisle |
Re: [xsl] Multiple/conditional impo, David Carlisle | Date | Re: [xsl] Multiple/conditional impo, David Carlisle |
Month |