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 :

Recuperer un doc xml d'une collection Exist


Sujet :

XQUERY/SGBD XML

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut Recuperer un doc xml d'une collection Exist
    Bonjour,

    J'ai voudrais récupérer un fichier xml ou tout son contenu dans une collection gérée par Exist-Db.
    Le fichier xml en question (du moins son début ):
    <TEI xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns="http://www.tei-c.org/ns/1.0" xmlnsi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg" xmlns:dbp="http://lalala/ns/1.0" xml:id="cote-g226_1_f_093__r____"><teiHeader type="page"><fileDesc><titleStmt><title>Cote : g226_1_f_093__r____ | ID_folio : 2477 | ID_Transcription : 808 | ID_Image :
    Ma fonction
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function __construct() {
     
    		//	création d'une instance EXIST
    		$db2 = new eXist (EXIST_PATH,EXIST_SERVER,EXIST_PORT);
    		$db2->setCredentials (EXIST_USER,EXIST_PASSWORD);
    		$db2->setParamIndent (false);
    		//	Pour le debugage
    		//$db2->setDebug(DEBUG);
     
    		$this->db=$db2;
     
    	}
    function getTranscriptionComplete($ref_bib_doc) {
     
    		/*$xquery ='declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
    			let $doc2 := doc("g226_1_f_093__r____-ver3.xml")
    			return <xml>{$doc2}</xml>';*/  //marche dans Exist
     
    		/*$xquery ='declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
    			let $doc2 := doc("g226_1_f_093__r____-ver3.xml")
    			return $doc2/*:TEI';*/		// marche dans Exist
     
    		$xquery ='declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
    			let $doc2 := doc("g226_1_f_093__r____-ver3.xml")
    			return $doc2/*:TEI';
     
    		$result = $this->db->executeQuery($xquery);
    		return $result;
    	}
    Tout ces essais retourne le résultat attendu dans le module d'interrogation xquery de Exist-db; mais dans php, je ne parviens pas à obtenir un résultat cohérent: j'ai un entier qui s'incrémente a chaque F5 à la place .
    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
    $file_name='g226_1_f_093__r____-ver3.xml';
    		$xq = new xqueryBP();
    		$transc_tei = $xq->getTranscriptionComplete($file_name);
    //		echo '<pre>';
    //		print_r($transc_tei); // affiche 1 puis 2, .... :cry:
    //		echo '</pre>';
    		$xml=new DOMDocument();
    		//$xml->load($file_name);
    		$xml->loadXML('<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="'.PATH_APPLICATION.'/templates/xsl/PP_V3_fragment_v2/xsl/diplomatic.xsl"?>'.$transc_tei);
    		/*$xml->loadXML('<?xml version="1.0"?>'.$transc_tei);*/
    		$xsl=new DOMDocument();
    		$xsl->load(PATH_APPLICATION.'/templates/xsl/PP_V3_fragment_v2/xsl/diplomatic.xsl', LIBXML_NOCDATA);
    		$proc = new XSLTProcessor();
    		$proc->importStylesheet($xsl);
    		echo '<div id="transcription_tei">'.$proc->transformToXml($xml).'</div>';
    		unset($xq, $file_name, $transc_tei, $xml, $xsl, $proc);
    Je précise que j'accède a cette page (ci-dessus) par ré-écriture d'url.
    Que si je copie dans le même répertoire que ma page mon fichier xml et que j'y accède par $xml->load($file_name); tout fonctionne! donc sans passer par ma fonction problématique.
    mais si je tente d'y accéder dans Exist par ma fonction, je ne retourne rien ou un entier ?!

    Le message d'erreur retourné par exist_phpapi:
    ---GOT---
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/xml
    Content-Length: 189
    Date: Fri, 13 Apr 2012 10:15:56 GMT
    Connection: close

    <?xml version="1.0" encoding="UTF-8"?><methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"><params><param><value><i4>1</i4></value></param></params></methodResponse>
    ---END---

    HEADER: HTTP/1.1 200 OK
    HEADER: Server: Apache-Coyote/1.1
    HEADER: Content-Type: text/xml
    HEADER: Content-Length: 189
    HEADER: Date: Fri, 13 Apr 2012 10:15:56 GMT
    HEADER: Connection: close

    ---EVALING---[22 chars]---
    new xmlrpcval(1, 'i4');
    ---END---
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    J'ai essayé plusieurs autres requêtes, et tout fonctionne normalement.
    Je pense que ce doit donc être ma requête qui pose problème.
    Mais dans le client Exist, elle retourne bien le contenu de mon fichier xml !?
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  3. #3
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    J'ai résolu mon problème en faisant ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function getTEIComplete($ref_bib_doc) {		
    		$_XQUERY1 = 'declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
    			let $doc := doc("'.EXIST_COLLECTION.'/'.$ref_bib_doc.'")
    			let $folio := $doc/*:TEI
    				return <record>
    							{$folio}
    						</record>';
    		$result1 = $this->db->executeQuery($_XQUERY1);
    		return $this->db->retrieve($result1, 0);
    	}
    Mais je ne comprends toujours pas pourquoi avant il me retournait des entiers?
    note: le fichier xml recherché est unique.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  4. #4
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut une autre solution
    je n'ai pas testé, mais je viens de voir que la classe exist, fournie pour php, implémente une méthode getDocument() : a tester !


    Après test >> getDocumentAsString(COLLECTION/fichier.xml); retourne le contenu complet de mon fichier en String.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

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

Discussions similaires

  1. uploader 1 fichier xml dans 1 collection Exist-Db
    Par tigunn dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 20/04/2012, 13h08
  2. debutant : ruby recuperer un doc xml
    Par nine dans le forum Ruby
    Réponses: 1
    Dernier message: 21/12/2008, 00h50
  3. comment recuperer les valeurs modifiees dans une collection
    Par anaisensitive dans le forum Struts 1
    Réponses: 11
    Dernier message: 09/09/2008, 11h56
  4. [XML] La réception du doc XML par une page PHP
    Par naima2005 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 14/05/2006, 00h16
  5. [xsl java]Appliquer une XSL à un String contenant doc XML
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/04/2003, 16h46

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