我试图在XQuery中声明一个用户定义的函数,它将传递一个元素并返回其树中的元素总数(意味着它自己加上它的子树)。
这是否可以在XQuery中使用递归函数进行,还是需要另一种方法?
答案 0 :(得分:1)
是的,这是可能的。由于这有一种家庭作业的气味,我没有给出完整的答案,而是关于如何做到这一点的想法。
对于这两种情况,您在计算时都必须考虑哪些子女。阅读您的问题,看起来您只是在寻找元素,并且可以安全地忽略属性,注释,文本节点和处理指令。
定义一个函数,它总结每个子树的大小(由递归函数调用确定)。像(这不是XQuery代码!):
function subtree_size {
sum(
for each element
return subtree_size(current element)
)
}
count
函数 XQuery有一个count
函数,它返回传递的元素数。有一个非常简短且易于查找的XPath表达式可以返回所有后代节点(包括节点本身)。查看XPath中可用的轴步骤。