2012-04-30 9 views
1

私は、そのユニットが記述されているxmlファイルを持っています。xslの使用について:選択

<RQ>2.000</RQ> 

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

+0

xsdは関連付けられていません。 – Kundan

+0

申し訳ありませんが、私はあなたのXSLTを意味しました。 :テストは=は "($記号を、 ' - ')が含まれ" いつます。 :<テンプレート名= "量" のxsl> - –

答えて

0

あなたがXSLを使用する場合:あなたはこの

<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> 

これはまた数を含まない要素に対処しまうような何かを行うことができ、を選択してください。あるいは、テンプレートマッチングをより有効に活用して、xxx​​:をすべて選択しての必要性を排除することもできます。

<xsl:template match="RQ[number() != number()]">NaN</xsl:template> 

<xsl:template match="RQ[number() >= 0]">+</xsl:template> 

<xsl:template match="RQ">-</xsl:template> 
+0

それは、このように働きました> から + コールXSL要素ノードでこのテンプレート。 < - Xpath指定 - > Kundan

+1

この情報を使用して質問を修正することができます。ありがとう! –

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> 

再び

<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> 
:この
様 - 所望の、このワンライナーのXPath式は、コード内の様々な場所から呼び出される別名前テンプレートにカプセル化することができる場合

+ 

:正しい結果を生成します

しかし、名前付きテンプレートの呼び出しは3つの行を占めていますが、単純に1つのライナーが使いますが、1行はです。

関連する問題