No ambiente de busca em documentos XML do XPath, por meio de uma Location Path Expression, assinale a expressão que seleciona todos os nós (nodes) “<livro>” que são filhos (children) do nó corrente.
- A)all [livro] descendant
Errada, porque mistura uma notação que não existe em XPath com a ideia de descendência, em vez de usar o eixo correto de filhos.
- B)child::livro
Certa, porque child::livro seleciona exatamente os nós livro que são filhos diretos do nó corrente.
- C)children[“livro”]
Errada, pois children[“livro”] não é sintaxe válida de XPath e ainda usa uma forma incorreta de indicar o nó.
- D)descendant-or-self livro
Errada, porque descendant-or-self busca descendentes e o próprio nó, não apenas filhos diretos.
- E)namescace [livro] children
Errada, pois namescace e children não correspondem a uma expressão válida de XPath para esse tipo de seleção.
Gabarito: B
No XPath, uma Location Path Expression serve para navegar pela árvore XML, quase como se voce estivesse “passeando” pelos nós do documento. Cada passo da expressão indica qual eixo e qual nó voce quer alcançar. Quando a ideia é pegar os filhos diretos do nó corrente, o eixo correto é o de children, isto é, os nós imediatamente abaixo do ponto onde voce está. Por isso, a expressão correta é child::livro. Ela lê-se assim: selecione, entre os filhos do nó atual, os nós chamados livro. Em XPath, o eixo child pode até ser omitido em muitas situações, mas aqui a banca exigiu a forma explícita do eixo, o que combina perfeitamente com a alternativa B. As demais opções misturam termos que não pertencem à sintaxe do XPath ou trocam a relação hierárquica. Em XML e XPath, filho não é descendente genérico: filho é só o nó direto; descendente já inclui netos, bisnetos e por aí vai. Essa diferença é uma das favoritas da FGV, porque parece detalhe, mas muda totalmente o resultado da busca. Em resumo: se voce quer os nós que são filhos do nó corrente, voce usa o eixo child com o nome do nó. É a navegação correta e sintaticamente válida em XPath.