我正在努力制造有条件的计数器。我的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] > tokenize(//comment/num, '/')[2])
但没有结果。我想过将变量用作计数器,但它们是不可变的。我该如何解决这个问题?
答案 0 :(得分:1)
您可以使用substring-before
和substring-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(.,'/') > substring-after(.,'/')])" /> times.
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
你几乎就在那里,诀窍是你需要将gt检查移动到谓词
count(//comment/num[tokenize(., '/')[1] > tokenize(., '/')[2]])
选择您感兴趣的num
元素,然后计算这些元素。