Если это может быть гарантировано, что 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>
Но обратите внимание, что вызов названного шаблона занимает три строки, а просто используется один лайнер, ну, одна строка.
С ним нет связанных xsd. – Kundan
К сожалению, я имел в виду ваш XSLT. –