Questão nº 87
Questão de Tecnologia da Informação · FGV TCE-PA 2024 (nº 87)
Considere o seguinte trecho de código XML:
```
<acervo>
<filme id="1">
<title>O concurseiro vencedor</title>
<author>José da Silva</author>
<year>2023</year>
</filme>
<filme id="2">
<title>A festa da aprovação</title>
<author>Maria dos Anjos</author>
<year>2024</year>
</filme>
<serie id="1">
<title>A preparação em etapas</title>
<issue>13</issue>
<month>Janeiro</month>
<year>2024</year>
</serie>
</acervo>
```
A expressão XPath que seleciona corretamente o título de todos os filmes no acervo é:
- A/acervo/filme//title
- B//filme/title (alternativa correta)
- C/acervo/serie/title
- D//title
- E//acervo/filme/title
Resposta comentada
Gabarito Alternativa B
XPath é uma linguagem que nos permite navegar e selecionar partes específicas de um documento XML, como se estivéssemos procurando um arquivo em uma estrutura de pastas. Usamos símbolos como `/` para um filho direto e `//` para qualquer descendente (ou para procurar em qualquer lugar do documento).
(A) Incorreta: Esta expressão seleciona os elementos `<filme>` que são filhos diretos de `<acervo>`, e então seleciona qualquer elemento `<title>` que seja descendente (filho, neto, etc.) desses `<filme>`. Embora funcione para este XML, o `//title` é menos específico do que `/title` quando o `<title>` é um filho direto, e não é a forma mais concisa ou canônica.
(B) Correta: A expressão `//filme/title` é a mais adequada. O `//filme` busca por todos os elementos `<filme>` em qualquer lugar do documento XML. Em seguida, o `/title` seleciona os elementos `<title>` que são filhos diretos de cada um desses `<filme>`. Isso garante que apenas os títulos dos filmes sejam selecionados, independentemente da posição do `<filme>` na hierarquia (embora neste caso estejam sob `<acervo>`).
(C) Incorreta: Esta expressão seleciona os títulos das séries (`/acervo/serie/title`), e não os títulos dos filmes, como pedido na questão.
(D) Incorreta: Esta é a armadilha mais comum. A expressão `//title` seleciona todos os elementos `<title>` que existirem no documento, independentemente de serem títulos de filmes ou de séries. A questão pede especificamente os títulos dos filmes.
(E) Incorreta: Esta expressão também seleciona corretamente os títulos dos filmes. O `//acervo` encontra o elemento `<acervo>` em qualquer lugar do documento (neste caso, o único `<acervo>` que é a raiz), e então `/filme/title` encontra os títulos dos filmes. No entanto, é ligeiramente menos concisa que a alternativa B, pois `//acervo` é redundante se `<acervo>` é sempre a raiz, e a alternativa B já é suficientemente robusta e direta ao focar no par `filme/title`.
Fonte: FGV TCE-PA 2024 Auditor de Controle Externo - Informática - Analista de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.