XQuery - 计算元素数量

时间:2014-05-20 04:23:17

标签: function recursion tree xquery

我试图在XQuery中声明一个用户定义的函数,它将传递一个元素并返回其树中的元素总数(意味着它自己加上它的子树)。

这是否可以在XQuery中使用递归函数进行,还是需要另一种方法?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。由于这有一种家庭作业的气味,我没有给出完整的答案,而是关于如何做到这一点的想法。

对于这两种情况,您在计算时都必须考虑哪些子女。阅读您的问题,看起来您只是在寻找元素,并且可以安全地忽略属性,注释,文本节点和处理指令。

使用递归函数

定义一个函数,它总结每个子树的大小(由递归函数调用确定)。像(这不是XQuery代码!):

function subtree_size {
  sum(
    for each element
    return subtree_size(current element)
  )
}

将所有元素传递给count函数

XQuery有一个count函数,它返回传递的元素数。有一个非常简短且易于查找的XPath表达式可以返回所有后代节点(包括节点本身)。查看XPath中可用的轴步骤。