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 :

[BaseX] servlet Xquery Scripting extension


Sujet :

XQUERY/SGBD XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 24
    Points
    24
    Par défaut [BaseX] servlet Xquery Scripting extension
    Bonjour, à tous,

    voilà je me retrouve avec des "webapp BaseX" à faire évoluer, et je tombe sur un langage SERVER bizarre, ça ressemble à du Xquery, mais il y a des trucs en plus.

    Alors je cherche, je cherche et de ce que je comprends c'est du "Xquery Scripting Extension" .

    https://www.w3.org/TR/xquery-sx-10/#prod-xquery-Block

    J'arrive a faire quelque truc basique avec ça, mais je suis loin du compte, et franchement la spec du W3c, j'ai du mal à la comprendre.

    donc ma question est ?

    Savez vous ou je peux trouver, des exemples, des how-to, ou des webapp déjà faite avec BaseX, etc...

    et surtout la philo, car par exemple je ne comprends pas pourquoi ces deux lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    file:create-dir($tmpdir)
     
    if (file:exists($finalFile)) then (file:delete($finalFile)) )
    Qui sont syntaxiquement correct et qui s'execute correctment l'une ou l'autre , refuse de fonctionner l'une aprés l'autre avec une erreur du type :

    Incomplete FLWOR expression: expecting 'return'
    J'ai du rater quelquechose, ou mon cerveau n'est pas bien cablé pour ce langage.....

    Merci d'avance les "developpeurs.net"

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Savez vous ou je peux trouver, des exemples, des how-to, ou des webapp déjà faite avec BaseX, etc...
    Pour BaseX, on doit évidemment regarder sa documentation. Il a son wiki.
    https://docs.basex.org/wiki/Table_of_Contents

    Et on peut télécharger la documentation en forme de pdf.
    https://docs.basex.org/wiki/Documentation

    car par exemple je ne comprends pas pourquoi ces deux lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    file:create-dir($tmpdir)
     
    if (file:exists($finalFile)) then (file:delete($finalFile)) )
    Qui sont syntaxiquement correct et qui s'execute correctment l'une ou l'autre , refuse de fonctionner l'une aprés l'autre avec une erreur du type :
    Incomplete FLWOR expression: expecting 'return'
    C'est probablement à cause d'incorrecte syntaxe; a priori, il n'y a pas de raison que les deux soient mutuellement exclusives. On devrait regarder un peu plus que les deux lignes seules pour faire un débogage propre. Mais, je peux tout de même propos un test tout de suite : (attention : avec une virgule comme séparateur)
    Code xquery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    file:create-dir($tmpdir)
    , 
    if (file:exists($finalFile)) then (file:delete($finalFile)) )
    Voilà !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci Tsuji,

    J'ai déjà, pas mal regardé la documentation de Xquery.

    En fait mon problème c'est quand j'ai besoin de developper du code qui sort du pattern FLOWR.

    En l'occurrence dans le cas présent, j'ai implémenté la librairie resumable.js, qui aide à l'upload de gros fichier, en faisant des "chunk" de petite taille et en implémentant un système de reprise. Coté Client, pas de problème ça fonctionne, c'est même trés facile, pour ceux que ça interresse !!

    Par contre pour mettre en oeuvre cette librairie, il y a des traitements à faire coté serveur et là je coince avec Xquery.

    Autant j'ai compris la syntaxe "REQUETE" (XPath, les fleurs et compagnie), du langage, mais quand je veux juste faire des traitements, je tombe sur plein d'erreurs, et je vois bien que je tatonne sans comprendre.

    Tu m'as peut être donné, la petite info que j'avais raté : il suffit de mettre une virgule, pour séparer plusieurs actions à réaliser dans un traitement ! si c'est aussi simple que ça, je vais devoir penser à apprendre à lire !!!

    En tous cas merci, je vais me remettre sur le sujet bientôt j'espère que je vais m'en sortir.

    je ne vais pas mettre du code ici, car en fait j'ai surtout besoin de comprendre comment fonctionne ce langage (au delà des requêtes, pour faire des traitements, ah oui la le me repète !!), son principe de fonctionnement, et ça je ne l'ai pas trouvé dans la doc, ou je ne l'ai pas vu ou je ne sais pas lire, ou ....


    En tous cas merci de m'avoir répondu.

    A bientôt les "developpeurs.net".

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Tu m'as peut être donné, la petite info que j'avais raté : il suffit de mettre une virgule, pour séparer plusieurs actions à réaliser dans un traitement ! si c'est aussi simple que ça, je vais devoir penser à apprendre à lire !!!
    Ecoute, savoir lire est un procès mental compliqué. On s'étonne à un moment ou un autre comment on se trompe si facilement, surtout dans une territoire de savoir-faire qu'on n'exerce pas trop. La syntaxe flowr a une apparence simple souvent trompeuse, et la façon de placer un séparateur est délicate pour tous practiquants pas limités aux non-initiés.

    Voici un petit xquery complet qui fait multiple de choses : supprimer un sous-répertoire si il existe et un fichier dans le répertoire courrant encore si il existe et puis faire un liste de contenu du répertoire courrant à la fin; ou dans l'autre sens pour le sous-répertoire et le fichier si ils n'existent pas et puis faire un liste de contendu encore.
    Code php : 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
    18
    19
    20
    21
    22
    23
    let $tmpdir:='_dummy'
    let $finalFile:='_sample.txt'
    let $dir:="."
    return
    (
    if (file:exists($tmpdir)) then 
    (
        file:delete($tmpdir)
        ,
        if (file:exists($finalFile)) then (file:delete($finalFile))
    )
    else
    (
        file:create-dir($tmpdir)
        ,
        if (not(file:exists($finalFile))) then 
        (
        file:append($finalFile, 'file created anew.')
        )
    ),
    for $file in file:list($dir)
    return $file
    )
    Fait exécuter le xquery une fois et puis la deuxième pour voir ce qu'on obtient chaque fois; et puis supprime ici ou là des petites virgules ou des parenthèses pour voir des érreurs ! Voilà.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup tsuji.

    je vais regarder tout ça, pour essayer de m'habituer a cette syntaxe trés "particulière".

    Ton exemple est trés interressant et m'amène à quelques questions :

    - pourquoi le return de la ligne 4, que signifie t il ? c'est celui là qui m'intrigue beaucoup finalement !!!
    - y a t il une différence si je met ma virgule la ligne suivante ou pas ?
    - si je comprends bien : ta méthode renvoie la liste des fichier qui se trouve dans le répertoire courant, quelquesoit la situation ?
    - les parenthèse sont elles indispensable, ou elles sont là pour m'aider à comprendre ?

    je te remercie encore pour ton aide.

    CDLT.

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Ton exemple est trés interressant et m'amène à quelques questions
    Si tu n'est pas dans la position de l'exécuter pour tester, questions tirées seulement pour questionner sans vraiment testées a priori n'est pas très utile: soit les questions sont tellement générales qu'il vaut mieux lire la documentation ou des tutos de quelques longeurs; soit elles sont de questions pièges - pour ce cas pourquoi pas montrer ce que tu a fait en réel par où la question originale est posée.

    - pourquoi le return de la ligne 4, que signifie t il ? c'est celui là qui m'intrigue beaucoup finalement !!!
    Je peux donner quelques éléments pour comprendre ce qu'il est:
    • return est comme le return d'une fonction comme tout le monde pense
    • return est comme ce qu'elle fait la méthode evaluate() de javax.xml.xpath.XPathExpression
    • return est comme ce qu'elle fait la méthode executeQuery de java.sql.PreparedStatement
    • return est comme StreamResult de la méthode transform() de javax.xml.transform.Transformer
    • return est comme ce qu'elle fait la méthode executeQuery() de javax.xml.xquery.XQPreparedExpression
    • return est comme ce qui sort dans stdout pour une application commandline...

    ou c'est une question piège.

    Le rest, si on fait tester, on peut se constater le comportement.

Discussions similaires

  1. Réalisation servlet et script
    Par jameson dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 18/08/2010, 10h18
  2. [Script] Numérotation des lignes d'un tableau extensible
    Par cilyneda dans le forum InfoPath
    Réponses: 7
    Dernier message: 12/12/2007, 14h45
  3. Réponses: 3
    Dernier message: 22/06/2006, 14h47
  4. [SERVLET]Détecter l'extension d'un fichier ??
    Par Devil666 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/06/2005, 17h27
  5. [Définition] Servlet, script, différence...
    Par Regis.C dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 29/04/2004, 13h37

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