用什么表达式与XQuery一起计算匹配字符串的数量?

时间:2011-12-08 16:37:30

标签: xpath xquery

我正在尝试计算包含某个单词的节点数。我如何计算总比赛数?

<Fruit>
     <type>apple</type>
     <type>orange</type>
     <type>apple</type>
     <type>apple</type>
</Fruit>

所以苹果的数量是3.我怎么得到它。我已经能够获得信息,在正常化后我可以打印出来:

<text>apple orange apple apple</text>

2 个答案:

答案 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>等内容。