0

私はXSLを初めて使用し、Win値の合計をカウントするための次のコードを作成しました。

<xsl:variable name="WinAmount">
        <xsl:number value="number(0)"/>
        <xsl:for-each select="Event">
            <xsl:if test="SpinTheReelsInfo">
                <xsl:number value="number(number($WinAmount) + number(SpinTheReelsInfo/Win))"/>
            </xsl:if>   
            <xsl:if test="SpinFreeReelsInfo">
                <xsl:number value="number(number($WinAmount) + number(SpinFreeReelsInfo/Win))"/>
            </xsl:if>               
        </xsl:for-each>

    </xsl:variable>
    <xsl:value-of select="$WinAmount"/>

私のxmlファイルでは、winタグは次の値と一致します。

<Win>0</Win>
....
<Win>20</Win>
.....
<Win>200</Win>

しかし、結果は121201です。これは、数値が連結され、すべての数値が増加したためだと思います。

しかし、なぜこれが起こっているのですか?そして、どうすればそれらを合計できますか?これにはどの演算子を使用できますか?私を助けてください!ありがとうございました!

更新:私のXML

<Game>
            <GameSeqNo>1</GameSeqNo>
            <Event>
                <Time>2012-12-20T08:24:26Z</Time>
                <SpinTheReelsInfo>
                    <Win>0</Win>
                    <JP>0</JP>
                </SpinTheReelsInfo>
            </Event>
            <Event>
                <Time>2012-12-20T08:24:42Z</Time>
                <PickFieldInfo>
                </PickFieldInfo>
            </Event>
            <Event>
                <Time>2012-12-20T08:25:07Z</Time>
                <SpinFreeReelsInfo>
                    <Win>20</Win>
                    <JP>0</JP>
                </SpinFreeReelsInfo>
            </Event>
            <Event>
                <Time>2012-12-20T08:25:18Z</Time>
                <SpinFreeReelsInfo>
                    <Win>200</Win>
                    <JP>0</JP>
                </SpinFreeReelsInfo>
            </Event>
</Game>
4

1 に答える 1

3

コメントでの私の提案で十分だと思います。完全なスタイルシートは次のとおりです。

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:template match="Game">
  <xsl:value-of select="sum(Event/SpinTheReelsInfo/Win | Event/SpinFreeReelsInfo/Win)"/>
</xsl:template>

</xsl:stylesheet>

出力は220です。

于 2012-12-20T11:08:08.030 に答える