Function XQuery-计算元素数

Function XQuery-计算元素数,function,recursion,tree,xquery,Function,Recursion,Tree,Xquery,我试图在XQuery中声明一个用户定义的函数,该函数将被传递一个元素,并返回其树中的元素总数(意味着它本身加上它的子树) 这在使用递归函数的XQuery中是可能的,还是我需要另一种方法?是的,这是可能的。由于这有一股家庭作业的味道,我不会给出一个完整的答案,而是关于如何做的想法 对于这两种情况,你必须考虑哪些孩子在计算时要考虑。在阅读您的问题时,看起来您只是在查找元素,可以安全地忽略属性、注释、文本节点和处理说明 使用递归函数 定义一个函数,该函数汇总每个子树的大小(通过递归函数调用确定)。类似

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


这在使用递归函数的XQuery中是可能的,还是我需要另一种方法?

是的,这是可能的。由于这有一股家庭作业的味道,我不会给出一个完整的答案,而是关于如何做的想法

对于这两种情况,你必须考虑哪些孩子在计算时要考虑。在阅读您的问题时,看起来您只是在查找元素,可以安全地忽略属性、注释、文本节点和处理说明

使用递归函数 定义一个函数,该函数汇总每个子树的大小(通过递归函数调用确定)。类似(这不是XQuery代码!):

将所有元素传递给
count
函数
XQuery有一个
count
函数,它返回传递的元素数。有一个非常简短且很容易找到的XPath表达式返回所有子代节点(包括节点本身)。看看XPath中可用的axis步骤。

太好了,这是我可以建立的基础:-)。我的主要问题是求和。
function subtree_size {
  sum(
    for each element
    return subtree_size(current element)
  )
}