At 2010-12-10 01:43 +0200, Andriy Gerasika wrote:
I cannot figure out how to use use-when attribute, beyond standard
"system-property('file-separator')" example.
That is the only context of using it, as those are the only
properties defined when the use-when= attributes are evaluated.
From section 3.12 of XSLT 2.0:
There are no syntactic constraints on the XPath expression that
can be used as the value of the use-when attribute. However,
there are severe constraints on the information provided in its
evaluation context. These constraints are designed to ensure
that the expression can be evaluated at the earliest possible
stage of stylesheet processing, without any dependency on
information contained in the stylesheet itself or in any source
document.
My code is overflown w/ "conditional" templates like:
<xsl:template match="some-xpath1[$file-set='A']">
<xsl:template match="some-xpath2[$file-set='B']">
<xsl:template match="some-xpath3[$file-set='C']">
$file-set is declared as parameter, but it is not really a
parameter, it is the same for all files converted in a set, other
parameters vary for each file.
I think System.setProperty("file-set", "A") is not a good choice,
because there can be many transforms running in the background.
How to properly rewrite above "pseudo" use-when to "true" use-when, i.e.:
<xsl:template match="some-xpath1" use-when="user-property('file-set')='A'">
p.s.
I use Saxon-9 HE
Have you yet tried using modes for your problem?
<xsl:choose>
<xsl:when test="$file-set='A'">
<xsl:apply-templates mode="file-set-A"/>
</xsl:when>
<xsl:when test="$file-set='B'">
<xsl:apply-templates mode="file-set-B"/>
</xsl:when>
<xsl:when test="$file-set='C'">
<xsl:apply-templates mode="file-set-C"/>
</xsl:when>
</xsl:choose>
...
<xsl:template match="some-xpath1" mode="file-set-A">
<xsl:template match="some-xpath2" mode="file-set-B">
<xsl:template match="some-xpath3" mode="file-set-C">
I hope this helps.
. . . . . . . . . Ken
--
Contact us for world-wide XML consulting & instructor-led training
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--