This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Conditional Import of stylesheet depending on passed Param possible?
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 27 Aug 2002 16:00:31 +0100
- Subject: RE: [xsl] Conditional Import of stylesheet depending on passed Param possible?
- Reply-to: xsl-list at lists dot mulberrytech dot com
Your subject line is all we need.
No, conditional import of a stylesheet based on the value of a parameter is not possible. Importing happens at compile time, parameter values aren't available until run-time.
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of
> William Reilly
> Sent: 27 August 2002 11:09
> To: XSL-List@lists.mulberrytech.com
> Subject: [xsl] Conditional Import of stylesheet depending on
> passed Param possible?
>
>
> Greetings.
>
> I'm looking to confirm my understanding that I *cannot* do
> what I'd like here. Thx.
> --------------------------------------------------------------
> ----------------------
>
> My "CT10" stylesheet (like my CT20, CT30 etc.) imports a
> "core" CT00 stylesheet. (see snippets below) That's working
> fine. (Xalan command-line)
>
> The problem (not a big one, but...) is that I am developing
> in two environments (Windows, local, IDE) + (Unix, server,
> CMS), and thus have two paths to certain assets, including
> stylesheets.
>
> In both environments, I am successfully using the (optional,
> essentially) passed Parameter ['environment=WINDOWS'] to use
> <xsl:choose> to accomplish some path logic (see inside
> CT00_core snippet below), but I believe that I CANNOT get
> that Parameter and <xsl:choose> logic ahead of the
> <xsl:import> statement itself (that must come first) (see
> "NICE TO HAVE" snippet further below).
>
> And so I am hand-editing (commenting out) the path to Windows
> or to Unix as appropriate, between environments. Ah well.
>
> > So, just looking to confirm I can't improve on this. (And of course
> > wondering if some other approach can help...)
> .......Also, getting past developing in two environments
> (eventually) will help :>)
>
> > Note:
> I have seen some recent posts indicating that instead of
> specific XSLTs importing the general, to reverse that and
> have the general call the specific -- that was based on XSLT
> processor version issues. That looks temptingly like the/an
> answer here, but even with that I still have the little
> conundrum of needing to know--immediately, first line--if I'm
> passed the "I'm on Windows this time" Parameter or not. I
> think I can't.
>
> Thanks v. much,
> William Reilly
> wreilly@digitas.com
> Boston, Massachusetts U.S.A.
>
> == CT00_core.xslt (snippet) ===
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:param name="environment"/>
>
> <xsl:variable name="path">
> <xsl:choose>
> <xsl:when test="$environment='WINDOWS'">
> <xsl:text>../misc/</xsl:text>
> </xsl:when>
> <xsl:otherwise>
> <xsl:text>/var/FutureTense/export/mlnm/misc/</xsl:text>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:variable>
> ===============
>
>
> CURRENTLY DO HAVE:
> == CT10_core.xslt (snippet) === ON WINDOWS
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <!-- <xsl:import
> href="/var/FutureTense/export/mlnm/xsl/ct00_core.xslt"/> -->
> <xsl:import href="ct00_core.xslt"/>
>
> ========================
>
> CURRENTLY DO HAVE:
> == CT10_core.xslt (snippet) === ON UNIX SYSTEM
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:import href="/var/FutureTense/export/mlnm/xsl/ct00_core.xslt"/>
> <!-- <xsl:import href="ct00_core.xslt"/> -->
>
> ========================
>
>
>
> *** NICE TO HAVE.... **** (but, I expect I can't...)
> == CT10_core.xslt (snippet) === ON BOTH (!?)
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:param name="environment"/>
>
> <xsl:choose>
> <xsl:when test="$environment='WINDOWS'">
> <xsl:import href="ct00_core.xslt"/>
> </xsl:when>
> <xsl:otherwise>
> <xsl:import
> href="/var/FutureTense/export/mlnm/xsl/ct00_core.xslt"/>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:variable>
> ======================
>
>
>
> ALL ON ONE LINE (pasteable):
> java org.apache.xalan.xslt.Process -IN
> BusinessML\2002-07-16-0_summary.xml -XSL
> xsl\ct11_press_release_summary.xslt -OUT
> StructureML\2002-07-16-0_summary.xml -PARAM environment WINDOWS
>
> COMMAND LINE (exploded for legibility)
> C:\jakarta-tomcat-4.0.3\webapps\ROOT\mlnmdev>
> java
> org.apache.xalan.xslt.Process
> -IN BusinessML\2002-07-16-0_summary.xml
> -XSL xsl\ct11_press_release_summary.xslt
> -OUT StructureML\2002-07-16-0_summary.xml
> -PARAM environment WINDOWS
>
> *****************************************************
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list