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:
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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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 :
J'ai cru trouver une solution avec la fonction matches(), mais je ne vois pas comment la mettre en oeuvre dans ce cas là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... where NOM LIKE '%it%'
Merci d'avance si vous trouvez une solution.
Partager