IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

recherche Xpath: problème de casse (majuscule/minuscule)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut recherche Xpath: problème de casse (majuscule/minuscule)
    Bonjour à tous,

    Comme tout le monde peut le savoir, le XML est sensible à la casse. Ceci étant sûr, c'est un problème notamment dans une recherche d'information par requete Xpath.

    Par exemple: une recherche sur 'Marseille' sera différente avec une sur 'marseille'.
    C'est donc un problème très chiant!!!!!!!!

    Quelqu'un aurait-il une solution, même en passant par Java, ou je ne sais quel langage??

    sivouplai, une p'tite solution..sniff.

    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Salut,

    la question que je me pose, ton << marseille >>, est-ce le nom d'une balise ou sa valeur ? car c'est tres different ...

    si c'est une valeur, alors tu peux faire un traitement prealable dans lequel tu mets toutes les valeurs en lowercase, tu regeneres le fichier XML modifie et tu le xpath ...

    ca te va ?

    Seb

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Oui, ce sont des valueurs.

    Pour ta solution, J'y ai déja pensé, mais t'imagine mettre en minuscule toutes les valeurs d'un arbre XML qui fait en moyenne 10000 caractères, et le faire pour plus de 100.000 enregistrements!!!!!

    Ce serait de la folie de tout mettre en session dans des XML temporaire (ma recherche est dynamique en fonction d'un schéma XML )...


    Mais c'est une bonne idée pour de petits arbres, ca c'est sur...

  4. #4
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Il faut que tu aies une référence quelque part.

    Si tu ne sais pas s'il y a Marseille ou marseille ni dans ton XML, ni dans la valeur cherchée, le problème est difficile à résoudre s'il y a une grosse quantité d'infos à traiter.

    Admettons que la référence soit ton XML, et que, d'une façon ou d'une autre, tu sois sûr qui y a "Marseille" dedans, et pas marseille, bref que tu sois sûr que la première lettre soit une majuscule et les autres des minuscules.

    Dans ce cas, avant de lancer ta recherche, tu appliques la même convention à la valeur cherchée : tu mets la première lettre en majuscule et les autres en minuscule sans te poser de questions.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    mais le but est de faire des recherches dans des arbres XML sur des balises précises.

    Il est bien entendu que les valeurs de ces balises sont inconnue (à l'interface de recherche) et que je ne peux pas savoir ce qu'il y a dedans, car c'est le but de ma recherche !!!!

    Je ne peux donc pas faire seulement une recherche d'arbre XML où la balise 'ville' contient 'Marseille', mais aussi où elle contient 'marseille', ou 'MarSeiLle', ou 'marSeillE', etc.... !!!

    Comment référencer une valeur inconnue??!!

    En fait, le champ de recherche est un champ de saisie libre, et non un liste déroulante (ds ce dernier cas, ta solution serait évidente)

    Merci.

  6. #6
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    seule solution : ne pas utiliser xpath mais des templates récursifs écrits à la main. Ainsi en ramenant la sélection xpath par filtrage à une comparaision toute bête, tu peux effectuer la conversion en minuscules avant la comparaison...(avec un coup de translate)

  7. #7
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Dans ces conditions je vois vraiment pas comment tu peux éviter de te taper un traitement lourd, en temps comme en ressources machine.

    En plus de la piste donnée par Gregory Picavet, j'en vois trois autres :
    • les regexp,
    • les bases de données XML, qui incluent souvent un module de requête (forcément ! sinon ce serait pas des bases de données ! ), et où se genre de problème est normalement (plus ou moins) résolu,
    • un moteur de recherche déjà tout fait, tel Lucene (à ce sujet, voir Parsing, indexing, and searching XML with Digester and Lucene).

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Le truc, c'est que justement, j'utilise une base de données XML (oracle 9i) et que le systeème de requetage SQL intègre le Xpath.

    Pour trouver les enregistrements (arbre XML) résultants de ma requete, je suis confronté au problème en Xpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select extract(champ_xml, '*') 
    from table_xml 
    where existsNode(champ_xml, 'personne[ville="marseille"]')=1;
    Le pb est là! et les template XSL ne pourront pas m'aider dans une requete PL/SQL...

    sniff.
    merci.

  9. #9
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Alors vous êtes vraiment compètement coincé !

    Soit vous trouvez une combine avec Oracle 9i, soit vous vous bornez au XPath et vous êtes obligés d'appliquer une solution style Case insensitive string compare, ou de vous en sortir avec Java ! Avec Java vous avez toujours la solution des regexp et de Grégory Picavet, non ?

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci.

    alors je suis vraimenent coincé...

    Eh bin, au moins j'aurais cherché.

    Merci XML!

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/03/2009, 15h21
  2. [SQL Server 2005] Gestion de la casse (majuscule/minuscule)
    Par Sieldev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/10/2007, 12h02
  3. Réponses: 1
    Dernier message: 07/09/2007, 11h58
  4. [XPath] Problème pour rechercher des caractères spéciaux
    Par JolyLoic dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/12/2006, 13h41
  5. Problème de casse dans une recherche
    Par lipao17 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/07/2005, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo