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

XQUERY/SGBD XML Discussion :

Interpréteur de requêtes XQUERY


Sujet :

XQUERY/SGBD XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mars 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Interpréteur de requêtes XQUERY
    Salut à tous j'ai un petit projet consistant à créer un programme en java pour interpréter des requêtes XQUERY. Pour le moment tout marche à merveille mais je voudrais l'améliorer en donnant la possibilité à l'utilisateur de charger le fichier xml cible afin qu'il puisse faire ses requêtes sans être obligé de donner le chemin complet du fichier xml.
    J'utilise l'API Saxon et pour le moment voila comment se présente une requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    XQDataSource ds = new SaxonXQDataSource();
    XQConnection conn = ds.getConnection();
    XQExpression xqe = conn.createExpression();
    String req=new String("for $et in doc('controlexml1.xml')/stocke/client "
                                 + "where ($et[@NUMCL='10CL']) "
                                 + "return $et/nom ");
    XQResultSequence result=xqe.executeQuery(req);
    Ce que je veux c'est qu'au lieu d'avoir ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "for $et in doc('controlexml1.xml')/stocke/client "
    je puisse avoir ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "for $et in /stocke/client "
    merci d'avance.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 498
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 498
    Points : 2 626
    Points
    2 626
    Par défaut
    je puisse avoir ça:
    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    "for $et in /stocke/client "
    Peut-être pas sans réference au document, rien de rien.

    Pourtant vous pouvez passer le document comme externe et profiter en passant le document dans la contexte dynamique à la classe de XQPreparedExpression.

    En gros comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    XQDataSource ds = new SaxonXQDataSource();
    XQConnection conn = ds.getConnection();
    //XQExpression xqe = conn.createExpression();
     
    String req=new String(
        "declare variable $doc external; " +
        "for $et in $doc/stocke/client " +
        "where ($et[@NUMCL='10CL']) " +
        "return $et/nom "
    );
    XQPreparedExpression xpe=conn.prepareExpress(req);
     
    java.io.InputStream is=new java.io.FileInputStream("controlexml1.xml");
    xpe.bindDocument(new javax.xml.namespace.QName("doc"), is, null, null);
     
    //XQResultSequence result=xqe.executeQuery(req);
    XQResultSequence result=xpe.executeQuery();
    Cela doit marcher comme vous souhaitez.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mars 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci de la réponse. Effectivement c'est ce que je cherchais, j'avais déjà tout mis en place pour récupérer le fichier xml de l'utilisateur il ne me manquer plus que de savoir comment l'utiliser dans la requête. Je vais tester ça et je te tiens au courant.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mars 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup tsuji j'ai réglé mon problème même si j'ai fait un peu de gymnastique pour pouvoir modifier une requête venant de l'utilisateur avant de l’exécuter. Il s'agissait pour moi d'ajouter ceci au début de chaque requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "declare variable $doc external; " +
        "for $et in $doc
    Voila encore merci et à +.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête Xquery (récupérer page web, etc)
    Par laderpiderp dans le forum XQUERY/SGBD
    Réponses: 0
    Dernier message: 24/04/2013, 23h38
  2. [XQUERY] [XSLT]afficher le résultat de requête xquery
    Par wildthing dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 17/06/2010, 11h27
  3. Requête XQuery -> Je vois pas comment faire
    Par MeTaLCaM dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 23/03/2010, 19h28
  4. Requête XQuery avec champ de type XML
    Par MigsFR dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/07/2008, 10h10
  5. logiciel de Fusion / Jointure de plusieurs requêtes Xquery
    Par Alain_B dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 11/04/2006, 14h29

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