1. O Que E XPath
XPath (XML Path Language) e uma linguagem de consulta para selecionar nos em documentos XML, padronizada pelo W3C. A versao 1.0 (1999) e a mais amplamente suportada e suficiente para a maioria dos casos de uso. XPath 2.0 e 3.0 adicionam suporte a tipos de dados e funcoes mais avancadas.
XPath e a fundacao de outras tecnologias W3C como XSLT (transformacao de XML) e XQuery (consulta de bases de dados XML). Tambem e amplamente usado em automacao de testes (Selenium) e web scraping para localizar elementos em paginas HTML.
2. Modelo de Dados do XPath
XPath enxerga um documento XML como uma arvore de nos com os seguintes tipos:
- No raiz: o topo da arvore, pai do elemento documento.
- Nos de elemento: as tags XML (<book>, <title>, etc.).
- Nos de atributo: os atributos dos elementos (category="fiction").
- Nos de texto: o conteudo textual de um elemento.
- Nos de comentario: comentarios XML (<!-- ... -->).
- Nos de instrucao de processamento: instrucoes como <?xml-stylesheet?>.
3. Eixos e Predicados
XPath 1.0 define 13 eixos para navegar na arvore de nos:
- child:: filhos diretos (implicito com /).
- descendant:: todos os descendentes (implicito com //).
- parent:: no pai (abreviado como ..).
- ancestor:: todos os ancestrais.
- attribute:: atributos (abreviado como @).
- self:: o proprio no atual (abreviado como .).
- following-sibling:: irmaos que vem depois.
- preceding-sibling:: irmaos que vem antes.
Predicados entre colchetes [] filtram os nos selecionados: //book[1] seleciona o primeiro <book>, //book[@category] seleciona books que tem o atributo category.
"Esta ferramenta usa a engine XPath 1.0 nativa do seu navegador — a mesma usada internamente pelo DOM para querySelector e metodos de traversal."
4. Funcoes Built-in
XPath 1.0 inclui diversas funcoes uteis:
- count(expressao): retorna o numero de nos no conjunto.
- string(no): retorna o valor textual de um no.
- contains(str, sub): verifica se str contem sub.
- starts-with(str, prefix): verifica se str comeca com prefix.
- last(): retorna a posicao do ultimo elemento no contexto.
- position(): retorna a posicao do no atual.
- not(expressao): negacao logica.
5. Casos de Uso e Ecossistema
XPath e usado em varios contextos de desenvolvimento e analise de dados:
- XSLT: transformacao de documentos XML em HTML, PDF ou outros formatos usando templates e expressoes XPath.
- Selenium e Playwright: localizacao de elementos em paginas web usando XPath para automacao de testes.
- Web scraping: extracao de dados de paginas HTML com bibliotecas como lxml (Python) e Nokogiri (Ruby).
- APIs SOAP: processamento de respostas XML de servicos web legados.
- Configuracao de sistemas: alguns sistemas de configuracao baseados em XML (como Maven POM) usam expressoes XPath.
6. Perguntas Frequentes
XPath funciona com HTML alem de XML?
Sim, XPath pode ser usado em HTML, mas o HTML deve ser um XHTML bem-formado. HTML "solto" com tags nao fechadas pode causar erros de parse. Esta ferramenta usa o parser XML estrito do navegador.
Por que a indexacao comeca em 1 e nao em 0?
XPath usa indexacao base-1, diferente da maioria das linguagens de programacao. //book[1] seleciona o primeiro elemento, nao o segundo. Isso e um comportamento intencional da especificacao XPath.
Qual a diferenca entre // e / em XPath?
/ (barra simples) navega para filhos diretos (//bookstore/book seleciona <book> diretamente filho de <bookstore>). // (barras duplas) seleciona em qualquer nivel da arvore (//book encontra <book> em qualquer posicao do documento).
Os dados XML sao enviados ao servidor?
Nao. Todo o processamento acontece no seu navegador via JavaScript e a API DOM nativa. Nenhum dado e transmitido.