Précédent   Forum des professionnels en informatique > Autres langages > XML/XSL et SOAP > XQUERY/SGBD
XQUERY/SGBD Le langage XQUERY et tout ce qui a trait aux relations XML et bases de données : BDD XML native, intégration/extraction de XML, XML dans BDD relationnelle... Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 12h53   #1
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 520
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 520
Points : 536
Points : 536
Par défaut problème de class

Bonjour à tous,

Je viens vous présenter un problème auquel malheureusement je n'entend rien ; alors si il était mal placé ne vous gêner pas pour le déplacer.
Voici:
J'ai un site décliné sur un serveur de développement et de production; la première version est bien sûr plus avancée. Lors d'une mise à jour en production d'un petit correctif, je me suis aperçu qu'une classe ne fonctionnait pas du tout de la même façon en dev et prod (configuré à l'identique).
Sur les deux j'utilise ce bout de code pour afficher des transcriptions tei (xml) et cela fonctionne.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$xq = new xqueryBP();
		$fragment = $xq->getFragmentSelonSaCoteEtSonNumero($ref_bib_doc, $ref_bib_num_frag);
		if ($fragment=='') {
			$fragment='<record><fragment></fragment></record>';
			$affichage_possible=false;
		}
		$xml=new DOMDocument();
		$xml->loadXML('<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="'.PATH_APPLICATION.'/affichage_fragment.xsl"?>'.$fragment);
		$xsl=new DOMDocument();
		$xsl->load(PATH_APPLICATION.'/affichage_fragment.xsl', LIBXML_NOCDATA);
		$proc = new XSLTProcessor();
		$proc->importStylesheet($xsl);	
		unset($xq);
Sur celle en dev j'avais rajouté dans une classe :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//	recup du numero de fragment dans la transcription
		$xq = new xqueryBP();
		$fragment = $xq->getNumeroDeFragment($row['cote'], $row['ID']);
		if ($fragment=='') {
			$fragment='<fragment></fragment>';
		}
		$dom = new DOMDocument;
		$dom->loadXML($fragment);
		$xPath = new DOMXPath($dom);
		$no_frag = $xPath->query('/fragment/id_fragment')->item(0)->nodeValue;
		if ($no_frag=='') {
			$no_frag=1;
		}
		unset($xq);
Cela fonctionne en dev mais pas en prod.
Voici ma classe xqueryBP :
Code :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//	fichiers inclus
require_once('../classes/exist_phpapi.inc');
 
 
Class xqueryBP {
 
	/**
	 * @var ressource
	 */
	public $db;
 
 
	/**
	 * Constructeur vide
	 *
	 */
	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);
		//$db2->setDebug(DEBUG);
 
		$this->db=$db2;
 
	}
...
/**
	 * Permet de recuperer le numéro de fragment dans la TEI
	 *
	 * @param 	string		$id_bibl		id de la ref biblio (mise en forme: "b{id}-3" ou "{id}-3" ou "b{id}" ou "{id}"
	 * @param 	string		$ref_bib_doc	cote+"-ver3.xml"
	 * @return 	unknown		xml				numéro de fragment
	 */
	public function getNumeroDeFragment($ref_bib_doc, $id_bibl) {
 
		$_XQUERY1='declare namespace dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0";
			let $doc := doc("'.EXIST_COLLECTION.'/'.$ref_bib_doc.'-ver3.xml")
			for $fragment in $doc//*:div[@*:type="fragment"]|$doc//*:item[@*:type="fragment"]
			let $id_fragment := data($fragment/@*:n)
			let $bibl := data($fragment/*:cit/*:bibl/@*:id) where $fragment/*:cit/*:bibl[@*:id="b'.$id_bibl.'-3"] 
								| $fragment/*:cit/*:bibl[@*:id="b'.$id_bibl.'"]  
								| $fragment/*:cit/*:bibl[@*:id="'.$id_bibl.'-3"] 
								| $fragment/*:cit/*:bibl[@*:id="'.$id_bibl.'"] 
				return <fragment>
							<id_fragment>{$id_fragment}</id_fragment>
						</fragment>';
 
		$result1 = $this->db->executeQuery($_XQUERY1);
		return $this->db->retrieve($result1, 0);
 
	}
On dirait presque qu'il ne trouve pas ma méthode getNumeroDeFragment() que j'ai rajouté dans ma classe xqueryBP sur le serveur en prod. Cela fonctionne très bien sur le serveur de dev.

Voila, j'espère sincérement que cela vous parle, vous avez peut-être rencontré ce problème. Merci de votre aide.
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h22   #2
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 520
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 520
Points : 536
Points : 536
Je n'ai pas put éditer mon précédent message; alors :
Après écrasement de l'intégralité du site, cela fonctionne -> mystère.
La vérité est ailleurs, et je n'ai pas le temps d'aller la chercher, donc : Résolu.
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h46.


 
 
 
 
Partenaires

Hébergement Web