de
l'XML tendance XSLT & XSL-FO mise
à jour le 15 juillet 2002
| Que
peut-on espérer des dernières technologies du domaine de XML pour
une application comme acro.dico ? Rien
de plus que la faculté de produire des sorties aux formats PDF, CHM, RTF...,
tout ceci à partir du contenu de la base MySQL. Le
texte qui suit n'est pas destiné à décrire XML et sa suite,
cela est très bien fait sur internet et il existe maintenant de très
bons bouquins en librairie, pour tous les niveaux de lecture. Cette page décrira
plutôt un problème prècis et les solutions à base d'XSL
pour le résoudre d'une façon particulièrement élégante,
à savoir, comment produire une version PDF par exemple, du contenu du site
acro.ecole.free.fr La
démarche se déroulera en deux temps. D'abord, il faudra produire
un fichier au format XML. Plusieurs méthodes existent maintenant pour
préciser les structures d'un fichier XML bien formé, entre autre
les schémas XML. On en restera dans un premier temps à la bonne
DTD, pour "data type definition", qui permet de caractériser
un fichier XML de façon très simple. {1}
création d'un fichier
au format XML grâce à un script PHP Nous
sommes coté serveur, le langage approprié sera donc encore PHP.
php2xml.php3 |
<? // ========================================
// php2xml.php3 // produit une liste des acronymes à un format XML
$version = "1.03"; // debut 8/10/2001 // jln@iut.univ-lehavre.fr
// 14/11/2001 version 1.0
// 21/03/2002 version 1.03 // ========================================
function nettoielemot($chaine) {
$chaine = ereg_replace( "à", "à", $chaine);
$chaine = ereg_replace( "â", "â", $chaine);
$chaine = ereg_replace( "é", "é", $chaine);
$chaine = ereg_replace( "è", "è", $chaine);
$chaine = ereg_replace( "ê", "ê", $chaine);
$chaine = ereg_replace( "ô", "ô", $chaine);
$chaine = ereg_replace( "û", "û", $chaine);
$chaine = ereg_replace( "", "'", $chaine);
$chaine = ereg_replace( "&", "", $chaine); $chaine
= ereg_replace( " ", " ", $chaine);
// retrait des espaces de fin de ligne $chaine = ereg_replace( " +$",
"", $chaine); return $chaine; } require("./config.php3"); //
connexion mysql // ============ $mylink = @mysql_connect($host, $user,
$passwd) or die ("<br>Pas de connexion MySQL<br>");
@mysql_select_db($database) or die ("<br>La
base de donnée n'est pas disponible. Bye!<br>"); print
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; //
creation de la DTD // =============
$xml = "<!DOCTYPE acronymes [\n"; $xml .= "<!ELEMENT
acronymes (m)+>\n"; $xml .= "<!ELEMENT m (a,d)>\n";
$xml .= "<!ELEMENT a (#PCDATA)>\n"; $xml .= "<!ELEMENT
d (#PCDATA)>\n"; $xml .= "]>\n"; print
$xml; print "<acronymes>\n";
// LE CORPS // ======== $result
= mysql_query("SELECT acro,valeur FROM acronymes order by acro");
while ($ligneacro = @mysql_fetch_array($result)) { $mot = $ligneacro[0];
$detail = $ligneacro[1]; $detail = nettoielemot($detail);
print "<m>\n"; print "<a>"
. $mot . "</a>\n"; print "<d>" . $detail
. "</d>\n"; print "</m>\n"; }
print "</acronymes>\n"; @mysql_close($mylink); ?>
| Ce
petit script PHP, on ne peut plus simple, parcourt la base MySQL et en extrait
la substantifique moelle. Question codage des lettres accentuées, on supprimera
toutes les séquences du type &xacute;
et autres, propres au domaine de
l'HTML pour utiliser le jeu de caractère ISO-8859-1
adapté à l'XML et à l'Europe. Suit un échantillon
du fichier XML produit par le script PHP et sauvegardé sur une station
cliente.
dico.xml |
<?xml version="1.0"
encoding="ISO-8859-1" ?> <!DOCTYPE acronymes [ <!ELEMENT
acronymes (m)+> <!ELEMENT m (a,d)> <!ELEMENT a (#PCDATA)>
<!ELEMENT d (#PCDATA)> ]> <acronymes> <m>
<a>3IL</a> <d>institut d'ingénierie informatique
de Limoges - site http://www.3il.fr/</d> </m> <m>
<a>A3IE</a> <d>institut d'informatique d'entreprise, Evry,
France - site http://www.iie.cnam.fr/</d> </m> .../... <m>
<a>ZSC</a> <d>zone spéciale de conversion</d>
</m> <m> <a>ZUS</a> <d>zone urbaine
sensible</d> </m> </acronymes> |
{2}
préparation d'une
station aux techniques XSLT et XSL-FO Une
fois le fichier XML produit et sauvegardé sur une station de travail, le
reste du traitement consistera à lancer des fichiers batch, soit manuellement,
soit de façon automatique quand ils seront bien réglés.
De nombreuses solutions sont possibles pour utiliser XSLT, certaines commerciales,
d'autres ouvertes et gratuites. Notre choix portera sur les secondes. Par
contre une batterie d'ustensiles va être nécessaire. Chaque outil
doit être téléchargé chez son auteur. Tous seront essentiellement
à base de JAVA donc indépendants du système d'exploitation
de la machine. Donc
première chose, taper "java" dans une console de votre machine.
Un message d'erreur signifie que vous ne disposez pas de JAVA, ce sera le cas
de WinXP. Qu'à cela ne tienne, vous disposerez d'une machine virtuelle
JAVA gratuite selon votre préférence chez Microsoft
5.5 méga-octets ou bien chez SUN
- choisir le run-time JAVA2 standard edition - 12 méga-octets. La
version PDF sera obtenue avec Apache Project's FOP tools, la version RTF avec
XMLmind FO Converter XFC-09, le tout provenant d'un passage par DocBook et ses
feuilles de style. Les versions HTML, XHTML et HTML Hepl sont issues directement
des DocBook XSL Stylesheets de Norman Walsh.
Si ce code vous a intéressé, si vous l'améliorez et surtout
si vous l'utilisez, faites-le moi savoir.
Le webmestre
de acro.dico.free.fr Jean-Luc NAIL
|