我正在尝试计算包含某个单词的节点数。我如何计算总比赛数?
<Fruit>
<type>apple</type>
<type>orange</type>
<type>apple</type>
<type>apple</type>
</Fruit>
所以苹果的数量是3.我怎么得到它。我已经能够获得信息,在正常化后我可以打印出来:
<text>apple orange apple apple</text>
答案 0 :(得分:4)
let $a := <Fruit>
<type>apple</type>
<type>orange</type>
<type>apple</type>
<type>apple</type>
</Fruit>
return
count($a/type[text() eq 'apple'])
应该带你去那里
答案 1 :(得分:1)
要计算具有精确值的元素,请使用eq
:
count(/Fruit/type[. eq 'apple'])
要计算包含特定子字符串的元素,请使用contains()
:
count(/Fruit/type[contains(.,'apple')])
所以这也包括<type>this is an apple</type>
。
对于一般单词搜索,您需要XQuery 1.0以外的东西。例如,如果您使用的是MarkLogic,则可以执行以下操作:
count(/Fruit/type[cts:contains(.,'apple')])
也会匹配<type>Apples</type>
等内容。