0

条件付きでカウンターを作るのに苦労しています。私のXMLは次のとおりです。

<comments>
    <comment>
        <name>Jonh</name>
        <num>4/7</num>
    </comment>
    <comment>
        <name>Mary</name>
        <num>2/9</num>
    </comment>
    <comment>
        <name>Catie</name>
        <num>12/2</num>
    </comment>
    <comment>
        <name>Stefen</name>
        <num>127/300</num>
    </comment>
</comments>

タグの構造は次のとおりです。

number1/number2

そして、すべてのタグで number1 が number2 より大きい頻度を知りたい

私はカウントで試しました:

count(tokenize(//comment/num, '/')[1] &gt; tokenize(//comment/num, '/')[2])

しかし、結果はありません。変数をカウンターとして使用することを考えましたが、それらは不変です。どうすればこれを解決できますか?

4

2 に答える 2

1

とを使用substring-beforesubstring-afterて、これらの値を計算できます。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        number1 is greater than the number2
        <xsl:value-of select="count(//num[substring-before(.,'/') &gt; substring-after(.,'/')])" /> times.
    </xsl:template>
</xsl:stylesheet>
于 2013-10-27T14:02:57.227 に答える
0

あなたはそのままほとんどそこにいます、トリックはgtチェックを述語に移動する必要があることです

count(//comment/num[tokenize(., '/')[1] &gt; tokenize(., '/')[2]])

興味のある要素を選択して、numそれらを数えます。

于 2013-10-27T13:55:05.523 に答える