31-08-2007, 08:41 PM
Coté client ou serveur ? Ca dépend du navigateur.
En gros, je commence par détecter le navigateur utilisé avec $_SERVER['HTTP_USER_AGENT'] et je colle ça en variable de session (pour éviter de retester à chaque page).
Je sais que IE6+ et FF1.5+ fonctionne bien et si je détecte ces navigateurs, je mets ma variable à true.
Pour le reste c'est sur le serveur, variable à false.
Ensuite, une simple fonction fait l'affaire.
Un truc du genre
En gros, je commence par détecter le navigateur utilisé avec $_SERVER['HTTP_USER_AGENT'] et je colle ça en variable de session (pour éviter de retester à chaque page).
Je sais que IE6+ et FF1.5+ fonctionne bien et si je détecte ces navigateurs, je mets ma variable à true.
Pour le reste c'est sur le serveur, variable à false.
Ensuite, une simple fonction fait l'affaire.
Un truc du genre
Code PHP :
<?php
function sendXSLT($sXml, $sXslFile) {
$sXml est une chaine XML valide
$sXslFile est le chemin vers le fichier XSL
if(!$_SESSION['Ok_XML']){
//Le client ne supporte pas les transfos XSL : travail sur le serveur
$xslt = new XSLTProcessor();
$xml = new domDocument();
$xml -> loadXml($sXml);
$xsl = new domDocument();
$xsl -> load($sXslFile);
$xslt -> importStylesheet($xsl);
header ('content-type: text/html');
echo $xslt -> transformToXml($xml);
} else {
//Le client peut faire les transfos XSL
$_xml ='<?xml version="1.0" encoding="UTF-8"?>'.LF;
$_xml.='<?xml-stylesheet type="text/xsl" href="'.$sXslFile.'"?>'.LF;
$_xml.=$sXml;
header ('content-type: text/xml');
echo $_xml;
}
}
Quand à XPath,c'est hyper simple à appréhender.
Quelques explications ici
Je finis avec deux exemples sur les possibilités du XSL
- Trois présentations différentes à partir de la même source de données (XSL, Résultat)
- Une FAQ. Une seule source de données permet de générer le sommaire et le contenu (XSL, Résultat)