Resolve lv:param-add/@value before processing
* src/current/include/preproc/template.xsl (preproc:gen-param-value)[lv:param-add]: Resolve value of @value before processing numeric expression (to support template variables). Error when any values are not numeric rather than producing NaN.master v2.8.2
parent
d8c7d8fee2
commit
a62d155eb0
|
@ -845,13 +845,31 @@
|
||||||
<xsl:template mode="preproc:gen-param-value" priority="5"
|
<xsl:template mode="preproc:gen-param-value" priority="5"
|
||||||
match="lv:param-add">
|
match="lv:param-add">
|
||||||
<!-- calculate the param value -->
|
<!-- calculate the param value -->
|
||||||
<xsl:variable name="param-value">
|
<xsl:variable name="name-value">
|
||||||
<xsl:call-template name="preproc:template-param-value">
|
<xsl:call-template name="preproc:template-param-value">
|
||||||
<xsl:with-param name="name" select="@name" />
|
<xsl:with-param name="name" select="@name" />
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
|
|
||||||
<xsl:value-of select="number($param-value) + number(@value)" />
|
<xsl:variable name="value-value">
|
||||||
|
<xsl:call-template name="preproc:template-param-value">
|
||||||
|
<xsl:with-param name="name" select="@value" />
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:variable>
|
||||||
|
|
||||||
|
<xsl:if test="not( $name-value castable as xs:float )">
|
||||||
|
<xsl:message terminate="yes"
|
||||||
|
select="concat( 'error: non-numeric lv:param-add/@name: ',
|
||||||
|
$name-value )" />
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:if test="not( $value-value castable as xs:float )">
|
||||||
|
<xsl:message terminate="yes"
|
||||||
|
select="concat( 'error: non-numeric lv:param-add/@value: ',
|
||||||
|
$name-value )" />
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:value-of select="number( $name-value ) + number( $value-value )" />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue