[XPATH] génération d'un xpath pour faire des recherches dans un xml
Bonjour,
Après quelques recherches je seche un peu sur ce problème et me demande si c'est réalisable.
Je cherche à réaliser une recherche dans un fichier xml à partir de champs remplis dans une formulaire web. Dans ce formulaire chacun des attributs des éléments de mon fichier xml est représenté par un champ.
Le fichier xml ressemble à ça:
Code:
1 2 3 4 5 6 7
|
<TREE>
<CONTACT NOM='Smith' PRENOM='Bob AGE='18'/>
<CONTACT NOM='Little' PRENOM='Stuart' AGE='17'/>
<CONTACT NOM='Litto' PRENOM='Stan' AGE='22'/>
...
</TREE> |
Il y'a donc un champ NOM, PRENOM et AGE qui peuvent tous être remplis ou non par l'utilisateur. Si aucun champ n'est remplis tous les contacts doivent être retournés, Si 'Smith' est rentré dans le champ NOM tous les contact s'appelant smith doivent être retourné.
Seul soucis, si un champ est rempli à moitié tous les eléments dont l'attribut respectif contient cette partie de mot doit être retourné. Par exemple, Si le champ NOM est rempli par 'it' et le champ PRENOM par 'St', les 2 derniers contacts doivent être retournés car ils contiennent 'it' et 'St' tous les 2.
J'avais déjà un xsl qui triait cet xml et formait une sortie adéquate mais avec tous les éléments sans exception. Donc je l'ai gardé et j'ai juste cherché à trouver le bon xpath pour faire le tri. Et j'avoue que c'est plus dur que je pensais. J'arrive à former l'xpath pour récuperer les éléments lorsque les attributs sont remplis completement mais pas moyen d'arriver à inserer des wildcards qui permettraient de recuperer les éléments correspondants lorsque les champs sont remplis à moitié.
N'y a t'il pas un moyen de faire comme dans une requete sql avec un :
Code:
1 2 3
|
...
where NOM LIKE '%it%' |
J'ai cru trouver une solution avec la fonction matches(), mais je ne vois pas comment la mettre en oeuvre dans ce cas là.
Merci d'avance si vous trouvez une solution.