/ / XQuery - calculando o número de elementos - função, recursão, árvore, xquery

XQuery - calculando o número de elementos - função, recursão, árvore, xquery

Estou tentando declarar uma função definida pelo usuário no XQuery, que receberia um elemento e retornaria o número total de elementos em sua árvore (ou seja, ele próprio mais sua subárvore).

Isso é possível mesmo no XQuery com uma função recursiva ou precisarei de outra abordagem?

Respostas:

1 para resposta № 1

Sim, isso é possível. Como isso tem um cheiro de lição de casa, não estou dando uma resposta completa, mas a idéia de como fazê-lo.

Nos dois casos, você terá que considerar qual crianças a considerar enquanto conta. Lendo sua pergunta, parece que você está procurando apenas elementos e pode ignorar com segurança atributos, comentários, nós de texto e instruções de processamento.

Usando uma função recursiva

Defina uma função, que resume o tamanho de cada subárvore individual (que você determina por uma chamada de função recursiva). Algo como (este não é o código XQuery!):

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

Passando todos os elementos para o count Função

XQuery tem um count função, que retorna o número de elementospassado. Existe uma expressão XPath muito curta e bastante fácil de encontrar para retornar todos os nós descendentes (incluindo o próprio nó). Veja as etapas do eixo disponíveis no XPath.