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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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.