如何使用XQuery计算属性的出现次数

时间:2018-04-15 21:10:32

标签: xml xquery

我正在使用XQuery来计算社交媒体上的一个帖子上相关评论的出现次数。但是,如果评论是由女性提出的,我只想计算这些事件。 (这是针对Uni的性别相关研究项目。

到目前为止,我已经让XQuery使用这个来计算女性所有评论的出现次数:

for $t in doc ("women.xml")
let $a:=$t//comment/@gender="female"
return count ($a)

然而,我需要一些帮助,找出我如何调整这一点以解释女性所说的外观特定评论的出现。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

首先,请注意

let $a:=$t//comment/@gender="female" return count ($a)

总是返回1.那是因为" ="是一个布尔值,布尔值是一个长度为1的序列。你想要的是

let $a:=$t//comment[@gender="female"] return count ($a)

或更简单

count($t//comment[@gender="female"])

现在,如果您只想定义"特定于外观的"评论,你可以做到

count($t//comment[@gender="female"][local:is-appearance-specific(.)])

然后你需要定义一个函数

declare function local:is-appearance-specific(
        $c as element(comment)) as xs:boolean {
   ....
};

如果评论为"特定于外观"。

,则返回true