xsl-list
[Top] [All Lists]

RE: use-when attribute?

2004-12-17 01:50:17

I'm trying to understand the details of the use-when attribute in the 
latest XSLT 2.0 draft.  Is the below a valid use?

   <xsl:import href="output-xhtml.xsl" 
use-when="$output-format='xhtml'"/>

No, because there are no variables in scope for evaluating the use-when
expression.

If you want to do this kind of thing, then in Saxon you can do

<xsl:import href="..." 
     use-when="system-property('output.format')='xhtml'"/>

which will read the value of the Java system property output.format, which
can be set on the command line using -Doutput.format=xhtml, or from a Java
application using System.setProperty().

This mapping of XSLT system properties to Java system properties is of
course not defined in the XSLT spec (because it's platform-dependent), but
hopefully most XSLT 2.0 processors will provide some kind of mechanism for
setting system properties of your choice.

However, I'm not sure whether this is the right design for your problem. I
would be inclined to stick with the traditional approach: the
special-purpose stylesheet module (here, the XHTML output module) should
import the general-purpose module, not the other way around; and you then
decide which special-purpose module to use by using that as your entry point
to the transformation. 

Michael Kay
http://www.saxonica.com/


I'm trying to work out this idea of mine of designing for multiple 
output targets.

So what I want to do is is define an output-format parameter 
in my main 
stylesheet (as above).  Likewise, I'd have a parameter for input 
format.  I then want to condition which drivers get imported based on 
these parameters using the use-when attribute.

The main stylesheet would then get imported into other 
stylesheets like:

   <xsl:import href="citeproc.xsl"/>
   <xsl:template match="/">
     <xsl:apply-imports>
       <xsl:with-param name="output-format" select="xhtml" 
tunnel="yes"/>
     </xsl:apply-imports>
     <html>
       <head>
         <title>Testing</title>
       </head>
       <body>
         <div id="content">
           <div id="main-content">
             <xsl:apply-templates/>
             <div id="bibliography">
               <xsl:copy-of select="$formatted-biblist"/>
             </div>
           </div>
         </div>
       </body>
     </html>
   </xsl:template>

Do I have the right idea here?

Bruce


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>