[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / odt2spip_30 / inc / odt2spip_traiter_mathml.php
1 <?php
2 /**
3 * Créer un article à partir d'un fichier au format odt
4 *
5 * @author cy_altern
6 * @license GNU/LGPL
7 *
8 * @package plugins
9 * @subpackage odt2spip
10 * @category import
11 *
12 *
13 */
14 if (!defined("_ECRIRE_INC_VERSION")) return;
15
16 /**
17 * appliquer la transformation XSLT spécifique des <maths> sur le fichier content.xml extrait du .ODT
18 *
19 * @internal XSLT pour la transformation MathML 2.0 to LaTeX :
20 * Vasil Yaroshevich, <yarosh@raleigh.ru>
21 * http://www.raleigh.ru/MathML/mmltex/index.php?lang=en
22 * @param string $chemin_fichier Le chemin du fichier contenant le MathML
23 * @return string Le LateX de sortie
24 *
25 */
26 function odt2spip_traiter_mathml($chemin_fichier) {
27 // recuperer le contenu du fichier
28 if (!$mathml = file_get_contents($chemin_fichier))
29 return(_T('odtspip:err_transformation_xslt_mathml'));
30
31 // virer le DOCTYPE qui plante le parseur vu que la dtd n'est pas disponible
32 $mathml = preg_replace('/<!DOCTYPE.*?>/i', '', $mathml);
33
34 // appliquer la transformation XSLT sur le fichier content.xml
35 // chemin du fichier xslt a utiliser pour les maths
36 $xslt_texte = _DIR_PLUGIN_ODT2SPIP.'inc/xsltml/mmltex.xsl';
37
38 // on est php5: utiliser les fonctions de la classe XSLTProcessor
39 $proc = new XSLTProcessor();
40
41 $xml = new DOMDocument();
42 $xml->loadXML($mathml);
43 $xsl = new DOMDocument();
44 $xsl->load($xslt_texte);
45 $proc->importStylesheet($xsl); // attachement des règles xsl
46
47 // lancer le parseur
48 if (!$latex_sortie = $proc->transformToXml($xml))
49 return(_T('odtspip:err_transformation_xslt_mathml'));
50
51 return $latex_sortie;
52 }
53
54 ?>