Pour utiliser une application XUL via un serveur web, il faut configurer un certain nombre de choses.
Lorsque le serveur web envoi un fichier au navigateur, il lui indique son type (appelé Mime-type). Cela permet au navigateur de pouvoir traiter correctement ce fichier en fonction de son contenu. Lorsque le serveur web envoi un fichier xul, il faut donc envoyer le mime-type correspondant à XUL. Idem pour RDF, CSS etc...
Il faut ajouter dans la configuration d'Apache (httpd.conf) ou dans un fichier .htaccess à la racine de votre site, les lignes suivantes pour qu'il envoie les bons types MIME pour les fichiers suivants (vérifiez toutefois si ces types n'existent pas déjà dans le fichier mimes.type d'apache ):
AddType application/x-xpinstall .xpi AddType application/vnd.mozilla.xul+xml .xul AddType text/xml .rdf .xbl AddType application/x-x509-ca-cert .cacert
D'une manière plus générale, pour tout type MIME et toutes extensions:
AddType <type MIME> <extension>[ <extension>]*
note: pour le RDF, le type mime recommandé est application/rdf+xml mais mozilla ne comprend que text/xml.
ToDo : mime type text/rdf à tester pour RDF
Il est possible de génerer à la volée des fichiers xul ou RDF, de la même manière que le html. Par défaut, les fichiers PHP envoyent le mime-type du html (text/html). Il faut donc, lorsque l'on génére du xul ou du RDF, indiquer au navigateur qu'il s'agit d'un contenu XUL ou RDF. On utilise alors la fonction PHP header, à mettre au début du script PHP.
Pour du XUL, on fera par exemple :
<?php
header('Content-type: application/vnd.mozilla.xul+xml');
// ... génération de XUL
?>
Dans le fichier php.ini, le paramètre short_tags doit être sur off. Il faut donc ouvrir son code php avec <?php et non plus <? (cette notation pouvant servir à la fois au PHP et au XUL, elle se révèle trop ambiguë).
Pour indiquer le bon content-type en jsp, il suffit d'inclure
<%@ page contentType="application/vnd.mozilla.xul+xml" %>
Et voici un exemple dans une servlet :
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class ?UneServlet extends ?HttpServlet { ... public void doGet(?HttpServletRequest req, ?HttpServletResponse res) throws ?ServletException, IOException { res.setContentType("application/vnd.mozilla.xul+xml"); ?PrintWriter out = res.getWriter(); out.println("<window>"); ... out.close(); } }
Rubrique ApplisWeb
Le contenu de cette page est disponible selon certaines conditions de réutilisation. Lire aussi la page des informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.