【问题标题】:How to count occurrences of attributes using XQuery如何使用 XQuery 计算属性的出现次数
【发布时间】:2018-04-15 21:10:32
【问题描述】:

我在社交媒体上的一个线程上使用 XQuery 来计算相关 cmets 的出现次数。但是,如果 cmets 是由女性制造的,我只想计算这些事件。 (这是大学的一个性别相关研究项目。

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

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

但是,我需要一些帮助来确定我将如何调整它以考虑女性所说的特定外观的 cmet 的出现。

感谢您的帮助

【问题讨论】:

  • 发布包含您希望选择和不希望选择的 cmets 的示例 XML,并明确指定区分您想要的和不想要的 cmets 的标准。如果没有这些细节,除了说count(//comment[@gender="female"]) 将返回@gender 属性值等于"female"comment 元素的数量之外,您的问题是无法回答的。

标签: xml xquery


【解决方案1】:

首先,请注意

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"])

现在,如果您只想定义“特定于外观”的 cmets,您可以这样做

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

然后你需要定义一个函数

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

如果评论被认为是“特定于外观”,则返回 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2019-01-10
    相关资源
    最近更新 更多