XSLT 2.0 lets you write stylesheet functions that can be called from
within an XPath expression, which solves this problem.
In 1.0 you could try breaking the expression up by using variables, but
of course these can't take arguments in the way that a template or
function can.
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Paul A. Hoadley
Sent: 03 January 2004 03:20
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Calculations involving measurements with units
Hello,
On Fri, Jan 02, 2004 at 11:08:38PM +1030, Paul A. Hoadley wrote:
<xsl:variable name="upper-margin"
select="concat(number(translate($page-height,
translate($page-height,
'0123456789.', ''), '')) div 3.75, translate($page-height,
'012345679.', ''))"/>
How can I neaten this up? I've written two templates:
<xsl:template name="getUnits">
<xsl:param name="input"/>
<xsl:value-of select="translate($input, '012345679.', '')"/>
</xsl:template>
<xsl:template name="stripUnits">
<xsl:param name="input"/>
<xsl:value-of select="translate($input, translate($page-height,
'012345679.', ''), '')"/>
</xsl:template>
This would seem to only _increase_ the verbosity of what I
have quoted above, since now I can't call the templates
inside the 'select' of the variable declaration. What is the
standard idiom here?
--
Paul.
mailto:paulh(_at_)logicsquad(_dot_)net
mailto:phoadley(_at_)maths(_dot_)adelaide(_dot_)edu(_dot_)au
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list