Omet navegació

3.5 - Consultes XPATH

També tenim funcions que ens permeten buscar dins d'un document XML. Podrem fer recerques de tipus XPATH. No podrem, en canvi, arribar a la potencialitat que proporciona XQUERY (amb les sentències FLWOR).

Els resultats d'una recerca XPATH es retornaran en un array de xml.

 

XPATH

Sintaxixpath(xpathxml)

Descripció: fa una recerca d'una expressió XPATH (primer paràmetre) en el document o contingut XML especificat en el segon paràmetre. El resultat vindrà en un array de XML. Hi pot haver un tercer paràmetre per a indicar espais de noms.

Exemples:

Veurem uns poquets exemples de recordatori. Aprofundirem més en la pregunta 6.2, ja que en eXist podrem fer més coses, el XPath és més complet. Recordeu que la funció text() torna el contingut d'un element. Si no la posàrem, ens tornaria tot l'element (amb etiqueta i tot).

  • Buscar el nom de totes les comarques (les comarques les tenim en la la fila 4 de P_XML)

SELECT xpath('//nom_c/text()',(SELECT doc FROM P_XML WHERE num=4));

  • Buscar les poblacions de la comarca Alcalatén (les poblacions les tenim en la la fila 5 de P_XML)

SELECT xpath('//poble[nom_c="Alcalatén"]/nom/text()',(SELECT doc FROM P_XML WHERE num=5));

  • Buscar els instituts de Castelló (codi de municipi 12040) (els instituts les tenim en la la fila 6 de P_XML)

SELECT xpath('//institut[cod_m=12040]/nom/text()',(SELECT doc FROM P_XML WHERE num=6));

  • Buscar els pobles que estan a una altura major de 1000 m.

SELECT xpath('//poble[altura > 1000]/nom/text()',(SELECT doc FROM P_XML WHERE num=5)); 

  • Buscar tots els pobles de la Plana Alta i la Plana Baixa

SELECT xpath('//poble[nom_c="Plana Alta" or nom_c="Plana Baixa"]/nom/text()',(SELECT doc FROM P_XML WHERE num=5));

  • Buscar les poblacions que tenen entre 100.000 i 300.000 habitants

SELECT xpath('//poble[poblacio>100000 and poblacio<300000]/nom/text()',(SELECT doc FROM P_XML WHERE num=5));

SELECT xpath('//poble[poblacio>100000][poblacio<300000]/nom/text()',(SELECT doc FROM P_XML WHERE num=5));