如果可以保证这RQ
是数字的有效表示,则只需使用:
substring('+-', 2 - (RQ > 0), 1)
一个完整的演示:
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select=
"substring('+-', 2 - (RQ > 0), 1)"/>
</xsl:template>
</xsl:stylesheet>
应用于此 XML 文档时:
<RQ>-2.000</RQ>
产生想要的正确结果:
-
当应用于本文档时:
<RQ>2.000</RQ>
再次产生正确的结果:
+
如果需要,可以将这个单行 XPath 表达式封装在一个单独的命名模板中,以便从代码中的不同位置调用——如下所示:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:call-template name="sign">
<xsl:with-param name="pNum" select="RQ"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="sign">
<xsl:param name="pNum"/>
<xsl:value-of select=
"substring('+-', 2 - (RQ > 0), 1)"/>
</xsl:template>
</xsl:stylesheet>
但是请注意,对命名模板的调用占用了三行,而简单地使用一个衬垫需要,嗯,一行。