Bonjour à tous,
Je viens vous présenter un problème auquel malheureusement je n'entend rien :cry: ; 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.
Sur celle en dev j'avais rajouté dans une classe :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);
Cela fonctionne en dev mais pas en prod.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);
Voici ma classe xqueryBP :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.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); }
Voila, j'espère sincérement que cela vous parle, vous avez peut-être rencontré ce problème. Merci de votre aide.