Como testar uma expressão XPath?
Cole seu XML à esquerda ou solte um arquivo ali. Digite uma expressão no campo XPath e pressione Enter ou clique em Avaliar. Cada nó encontrado aparece com o tipo, um caminho curto como /catalog/book[2]/title, a linha e o conteúdo. Mostrar na entrada seleciona esse nó no seu XML. Uma função como count() retorna um número, e o resultado mostra esse valor. Copiar e Baixar entregam o resultado como texto simples. Carregar exemplo abre um catálogo de livros para você testar na hora.
Por que minha expressão não retorna nada?
Em nove de cada dez casos, é um namespace. Quando o elemento raiz tem xmlns="…", todo elemento sem prefixo pertence a esse namespace padrão, e um simples //book deixa de encontrá-lo. Este testador dá um prefixo ao namespace padrão, d, a menos que você escolha outro em Namespaces, e sugere a expressão corrigida quando percebe o problema. Outras causas comuns: um erro de digitação em um nome, já que o XML diferencia maiúsculas de minúsculas, ou um @ esquecido antes de um atributo.
Exemplos de expressões para testar
//book/title lista todos os títulos. //book[@lang='en'] fica com os livros cujo atributo lang é en. count(//book) conta esses livros, e sum(//price) soma os preços. //title[contains(., 'Dark')] encontra títulos que contêm uma palavra, e //book[last()] pega o último livro. Para selecionar o próprio atributo, escreva //book/@id. O teste text() retorna nós de texto, enquanto string() retorna o texto completo de um elemento.
Qual versão de XPath este avaliador suporta?
XPath 1.0, a versão embutida em todos os navegadores, com as suas 27 funções. XPath 2.0 e 3.1 não são suportados, então lower-case(), matches() ou if … then … else geram uma mensagem clara, muitas vezes com uma alternativa em 1.0. As mesmas expressões funcionam em uma folha de estilo XSLT 1.0: experimente no testador de XSLT. Se o seu XML tiver um erro de sintaxe, o testador mostra primeiro a linha dele, como faz o validador de XML.
Esta ferramenta envia meu XML?
Não. A expressão é avaliada nesta aba do navegador, e as regras de segurança desta página bloqueiam requisições de rede. Nada é salvo: feche a aba e seu XML some. Para deixar legível um arquivo longo em uma linha só, use antes o formatador de XML.
Dúvidas
Por que //book não encontra nada se meu XML tem elementos book?
Seu XML provavelmente tem um namespace padrão, escrito xmlns="…" na raiz. No XPath 1.0, um nome sem prefixo só encontra elementos sem namespace. Este testador dá um prefixo ao namespace padrão, d por padrão, então escreva //d:book.
Posso usar funções do XPath 2.0 ou 3.1?
Não. Os navegadores trazem o XPath 1.0, e este testador usa o motor do navegador. Funções como lower-case() ou matches() geram uma mensagem clara, muitas vezes com um jeito de chegar ao mesmo resultado em XPath 1.0.
Qual é a diferença entre text() e string()?
text() seleciona os nós de texto que estão diretamente dentro de um elemento, então você recebe nós. string() retorna o texto do elemento inteiro, filhos incluídos, como um único valor.
Como contar ou filtrar nós?
count(//item) retorna um número. //item[contains(@name, 'pro')] fica com os itens cujo name contém pro. //item[position() <= 3] fica com os três primeiros, e //item[last()] com o último.
Qual é o tamanho máximo do meu XML?
Até 10 MB. A lista mostra os primeiros 500 resultados, e Copiar ou Baixar entregam todos como texto simples.
Meu XML é enviado para algum lugar?
Não. A expressão roda nesta aba do navegador, e a página não tem permissão para fazer requisições de rede. Feche a aba e seu XML some.