xquery—获取单个父级中不为空的元素的计数 请考虑以下XML -

xquery—获取单个父级中不为空的元素的计数 请考虑以下XML -,xquery,Xquery,但是,我从上面得到的结果是7,即包括空的“p”元素 我想到的另一种方法是在所有的“p”元素上使用for循环,但是在这种情况下,我如何检索循环的元素总数呢?如果我在这种情况下使用count,那么我只需获得[1,1,1,1,1]-即每个p元素的计数(因为在for循环中,计数将针对每个“p”元素,而不是div本身).尝试以下方法: count($doc//div[@id='test']/p[node()]) 第二个谓词[node()]只选择包含子节点的元素,它相当于[/node()],因为问题特别要

但是,我从上面得到的结果是7,即包括空的“p”元素

我想到的另一种方法是在所有的“p”元素上使用for循环,但是在这种情况下,我如何检索循环的元素总数呢?如果我在这种情况下使用count,那么我只需获得[1,1,1,1,1]-即每个p元素的计数(因为在for循环中,计数将针对每个“p”元素,而不是div本身).

尝试以下方法:

count($doc//div[@id='test']/p[node()])

第二个谓词
[node()]
只选择包含子节点的元素,它相当于
[/node()]

,因为问题特别要求“
p
元素中包含一些文本”
下面是如何精确获得此类
p
元素的数量:

count(/*/div/p[string(.)])
这将生成具有非空字符串值的所有
p
元素的数量,这些元素是
div
的子元素,该div是XML文档顶部元素的子元素

此外,如果“非空”也表示只有非空白字符串值

count(/*/div/p[normalize-space(.)])
count(/*/div/p[string(.)])
count(/*/div/p[normalize-space(.)])