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.
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 $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 : 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);
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 : 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); }
Voila, j'espère sincérement que cela vous parle, vous avez peut-être rencontré ce problème. Merci de votre aide.
Partager