xpath 2.0 содержит условную логику if..then..else , но в более вероятном случае, когда вы используете xpath 1.0, я боюсь, что вам придется полагаться на XSLT, чтобы сделать это для вас, то есть:
<xsl:variable name="myvar">
<xsl:choose>
<xsl:when test="$value > 0">
<xsl:select="format-number($value, '###,###.00')"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>>
</xsl:variable>
.. или смешать расширение (.NET может сделать это изначально, EXSLT существует в противном случае, возможно, доступно больше опций)
Насколько мне известно, никаких функций xpath не существует, чтобы вывести вас из этого, но я мог бы упустить что-то экзотическое.