xquery—获取单个父级中不为空的元素的计数 请考虑以下XML -
但是,我从上面得到的结果是7,即包括空的“p”元素 我想到的另一种方法是在所有的“p”元素上使用for循环,但是在这种情况下,我如何检索循环的元素总数呢?如果我在这种情况下使用count,那么我只需获得[1,1,1,1,1]-即每个p元素的计数(因为在for循环中,计数将针对每个“p”元素,而不是div本身).尝试以下方法: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()],因为问题特别要
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(.)])