Forum Clubic

[PHP / XML ] Utilisation de DomXML

Bonjour,

Je souhaite utiliser DOM XML pour transformer un document xml avec un document xsl … j’ai essayé pas mal de méthodes… Ce qui m’embête c’est quand cherchant sur Internet des exemples d’implémentations de cette méthode, ils sont quasiment tous différents … et évidement je n’arrive à en faire fonctionner aucun…

Voilà le code que j’utilise :


$DomXmlFile = DOMDocument::load($file);

$DomXslTrans = DOMDocument::load('./styles/PJEML.xsl');

//création du processeur xslt

$proc = new XSLTProcessor;

//le processeur xslt dispose de la transformation xslt  	

$proc->importStyleSheet($DomXslTrans);

// le résultat de la transformation XSLT envoyé au client

print $proc->transformToXML($DomXmlFile);	


Voilà l’erreur renvoyé :

Fatal error: Call to undefined function: load() in /homepages/12/d141864718/htdocs/cilma/filtre.php on line 13

Bon je me suis dit que je n’avais certainement pas la bonne extension d’installé, mais pourtant après avoir fait un phpinfo() pour m’en assurer, j’ai l’air d’avoir l’API nécessaire … aussi bien en local que sur mon serveur (j’ai essayé sur les deux)…

Voilà la partie concernant DOMXML :

domxml
DOM/XML  enabled
DOM/XML API Version  20020815
libxml Version  20611
HTML Support  enabled
XPath Support  enabled
XPointer Support  enabled
DOM/XSLT  enabled
libxslt Version  1.1.7
libxslt compiled against libxml Version  2.6.11

Après pas mal d’essais… je n’ai toujours rien pu afficher … [/code][

Voici la documentation de l’extension DOMXML :slight_smile:

Il ne faut pas confondre cette extension (pour PHP4) avec l’extension DOM (pour PHP5). Ton code utilise PHP5.
Idem, XSLTProcessor c’est l’extension XSL sous PHP5. Regarde du côté de l’extension XSLT pour avoir la même chose sous PHP4.

Oui je sais, les noms des modules ne sont pas clairs à ce niveau :o

Merci pour ton aide, j’ai ainsi pu mieux comprendre tout ses noms “barbares” …

Finalement, j’arrive à un résultat avec ce code :


$xmldoc = domxml_open_file("algebre.xml");
$xsldoc  = domxml_xslt_stylesheet_file ("PJEML.xsl");
$result  = $xsldoc->process($xmldoc);
print $result->dump_mem();

Toutefois, plus aucun de mes accents ne passent, ni les entités représentant des symboles mathématiques que j’utilisais comme ∈ ε , etc Je suppose que pour ce qui est des accents il faudrait que j’utilise l’encodage utf-8 … c’est ce que j’ai essayé de faire … mais là plus aucun résultat, cela me renvoe une erreur php … Si quelqu’un a une idée ?

Pour ce qui est des symboles mathématiques … il ya bien MathML … mais même en ayant cherché un peu je ne vois pas trop comment l’utiliser simplement … :frowning:

Il y aussi un rendu beaucoup moins joli qu’avant (le sommaire au début n’est plus exact) mais je pense que cela devrait pouvoir être améliorer avec le xsl et css …

Merci d’avance pour votre aide :slight_smile:

J’ai réussi à résoudre tous les problèmes excepté celui de l’encodage de mon document (tous les accents sont remplacés par des caractères oléolé) et de MathML… :frowning:

Mes documents sont déclarés en encoding="ISO-8859-1" …

Voici la déclaration de mon document XML ainsi qu’un bout de code utilisant MathML :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">]>

<math xmlns="&mathml;">
 <msub>
  <mi>a</mi>
  <mn>0</mn>
 </msub>
 <mo>+</mo>
 <mfrac>
  <mn>1</mn>
  <mrow>
   <msub>
    <mi>a</mi>
    <mn>1</mn>
   </msub>
   <mo>+</mo>
   <mfrac>
    <mn>1</mn>
    <mrow>
     <msub>
      <mi>a</mi>
      <mn>2</mn>
     </msub>
     <mo>+</mo>
     <mfrac>
      <mn>1</mn>
      <mrow>
       <msub>
        <mi>a</mi>
        <mn>3</mn>
       </msub>
       <mo>+</mo>
        <mfrac>
         <mn>1</mn>
         <mrow>
          <msub>
           <mi>a</mi>
           <mn>4</mn>
          </msub> 
         </mrow> 
        </mfrac>
       </mrow>
      </mfrac>
     </mrow>
    </mfrac>
   </mrow>
 </mfrac>
</math>

La déclaration du fichier xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

Je cherche toujours :frowning: