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

Prolog Discussion :

Lecture et interprétation d'un champ XML/SGML vennant d'une base de données


Sujet :

Prolog

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut Lecture et interprétation d'un champ XML/SGML vennant d'une base de données
    Bonjour à tous,

    dans le post http://www.developpez.net/forums/d12...arbres-n-aire/ nous voyons comment lire et modifier une structure XML/SGML lue depuis un fichier (encore merci pour le coup de main). Dans mon cas, la structure XML/SGML n'est pas lue depuis un fichier mais depuis un base de données comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test2:-
        odbc_connect('MySQL_VULCAN',_,[user(root),password(''),alias(db),open(once)]).
        findall(L, odbc_query(db,"SELECT monChamp FROM MATABLE WHERE id=1",L),MyData),
    write(MyData),nl,
        odbc_disconnect(db).
    Avec ce code, on sait aller executer la requete SQL: SELECT monChamp FROM MATABLE WHERE id=1 sur une base de données (via odbc) et en afficher le resultat.

    Dans notre cas, le contenu de monChamp sera une structure XML/SGML, pour simplifier nous prendrons comme exemple la structure du post modification-darbres-n-aire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?sgml version="1.0" encoding="UTF-8" ?>
    <menagerie>
    	<animal type="chat" name="a1"></animal>
    	<animal type="chat" name="a2" ></animal>
    	<animal type="chat" name="a3"></animal>
    	<animal type="rat"  name="a4"></animal>
    	<animal type="chien"  name="a5"></animal>
    	<niche>
    		<animal type="chien"  name="a6"> </animal>
    		<animal type="chien"  name="a7"> </animal>
    	</niche>
    </menagerie>
    La question est donc: comment faire charger la structure de manière à transformer pour traiter les données issues de la base ?

    pour rappel, on avait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test :-
    	load_sgml_file('e:/in.xml', Txt),
    	Txt = [_,E],
    	insert(E,  E1),
    	write(E1).
    j'ai tenté de comrpendre le code source sgml.pl, mais je dois avouer rester sec.

    question subsidiaire il existe un pretty_print très sympatique pour les affichages XML/HTML qui ne semble plus fonctionner avec du SGML, y aurait-il un équivalent ?

    d'avance merci :O)

    Cdt,

    jfv.work

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    question subsidiaire il existe un pretty_print très sympatique pour les affichages XML/HTML qui ne semble plus fonctionner avec du SGML, y aurait-il un équivalent ?
    Ce n'est pas du tout un pretty_print, c'est que ce qui est récupéré en lecture html contient des retours chariot et autres caractères inutiles qui polluent l'information récupérées.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    pretty_print est le nom de la "fonction" pas le résultat effectivement

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    En ce qui concerne la lecture des données récupérées lors de la requête odbc, ion peut peut-être essayé en utilisant les stream eg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    test2:-
        odbc_connect('MySQL_VULCAN',_,[user(root),password(''),alias(db),open(once)]).
        findall(L, odbc_query(db,"SELECT monChamp FROM MATABLE WHERE id=1",L),MyData),
        write(MyData),nl,
        load_sgml_file(stream(MyData), Txt),
        writeln(Txt),
        odbc_disconnect(db).
    C'est juste une suggestion, à tester, il se peut que ça ne marche pas du tout.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Après un test: j'ai un message d'erreur:
    sqml_parse/2: stream `la structure sgml` does not exist.
    je suppose donc que la conversion de la chaîne lue dans la base en stream n'est pas effective

    cdt,

    jfv

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Est-il possible d'avoir le résultat de la requete odbc ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    oui le résultat en question est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?sgml version="1.0" encoding="UTF-8" ?>
    <menagerie>
    	<animal type="chat" name="a1"></animal>
    	<animal type="chat" name="a2" ></animal>
    	<animal type="chat" name="a3"></animal>
    	<animal type="rat"  name="a4"></animal>
    	<animal type="chien"  name="a5"></animal>
    	<niche>
    		<animal type="chien"  name="a6"> </animal>
    		<animal type="chien"  name="a7"> </animal>
    	</niche>
    </menagerie>

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il est sous forme d'atome, de terme de liste ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    ça répond positivement à un test atom(), donc je suppose que c'est un atome.

  10. #10
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ceci fonctionne, il faut chercher de ce coté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    test :-
    	SGML = '<?sgml version="1.0" encoding="UTF-8" ?>
    <menagerie>
    <animal type="chat" name="a1"></animal>
    <niche>
    <animal type="chien"  name="a6"> </animal>
    </niche>
    </menagerie>',
    	atom_chars(SGML, Str),
    	open_chars_stream(Str, Stream),
    	load_sgml_file(Stream, Txt),
    	Txt = [_,E],
    	insert(E,  E1),
    	print(E1).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    ça marche très bien, encore une fois merci beaucoup

    cdt,

    jfv.work

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/10/2011, 14h01
  2. Réponses: 11
    Dernier message: 24/05/2011, 09h50
  3. Quand utiliser un fichier xml au lieu d'une base de données?
    Par ChriGoLioNaDor dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 27/04/2010, 14h22
  4. [XML] XML en natif dans une base de données relationnelle
    Par evlad dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/04/2007, 09h31
  5. Champs de type XML dans une base de données
    Par Flocodoupoil dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/07/2004, 18h57

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