1

ユニットが記載されたxmlファイルがあります。

    <RQ>2.000</RQ>

xslファイルをチェックインして、値が+または-記号であるかどうかを確認する必要があります。それらが符号なしの場合、デフォルトは+符号になります。xsl:choose要素で書いていましたが、うまくいきませんでした。

4

2 に答える 2

0

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>
于 2012-04-30T07:21:59.973 に答える
0

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 行を占めることに注意してください

于 2012-04-30T12:35:04.407 に答える