ユニットが記載されたxmlファイルがあります。
<RQ>2.000</RQ>
xslファイルをチェックインして、値が+または-記号であるかどうかを確認する必要があります。それらが符号なしの場合、デフォルトは+符号になります。xsl:choose要素で書いていましたが、うまくいきませんでした。
xsl:chooseを使用したい場合は、次のようにすることができます
<xsl:template match="RQ">
<xsl:choose>
<xsl:when test="number() != number()">NaN</xsl:when>
<xsl:when test="number() >= 0">+</xsl:when>
<xsl:otherwise>-</xsl:otherwise>
</xsl:choose>
</xsl:template>
これは、数値を含まない要素にも対応します。または、テンプレートマッチングをより有効に活用し、 xsl:chooseの必要性を完全に排除することもできます。
<xsl:template match="RQ[number() != number()]">NaN</xsl:template>
<xsl:template match="RQ[number() >= 0]">+</xsl:template>
<xsl:template match="RQ">-</xsl:template>
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>
再び正しい結果が生成されます。
+
必要に応じて、この 1 行の 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>
ただし、名前付きテンプレートの呼び出しは 3 行を占めることに注意してください。