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-beforeandsubstring-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 回答