Bonjour à tous
J'avais programmé il y a quelques temps un explorateur version Web tout en PHP qui fonctionnait très bien, seulement il valait mieux ne pas regarder du côté du code.
J'ai donc décidé récement de le réécrire en intégrant des CSS/DOM/AJAX/XML/XSL/etc la totale.
Après tout, le contenu d'un disque étant une arborescence, le XML semblait plutot adapté. Et un petit coup d'Ajax pour pouvoir faire recharger les répertoires à la volée. Je me retrouve donc avec mon arborescence en XML, ce qui me permettra quand j'aurais tout compris de faire du tri sans recharger, etc. Jusqu'ici tout va bien
Mais là, c'est le drame: je veux donc faire apparaitre l'arbre dans une div par l'intermédiaire d'une transformée, et malgré toutes mes tentatives, le contenu apparait sans mise en forme.
Voici le code:
Un XSL simpliste pour l'instant
Un bout de XML pour l'exemple
Je suis preneuse de toute info, surtout si quelqu'un a plus simple comme solution ...
Merci d'avance
J'avais programmé il y a quelques temps un explorateur version Web tout en PHP qui fonctionnait très bien, seulement il valait mieux ne pas regarder du côté du code.
J'ai donc décidé récement de le réécrire en intégrant des CSS/DOM/AJAX/XML/XSL/etc la totale.
Après tout, le contenu d'un disque étant une arborescence, le XML semblait plutot adapté. Et un petit coup d'Ajax pour pouvoir faire recharger les répertoires à la volée. Je me retrouve donc avec mon arborescence en XML, ce qui me permettra quand j'aurais tout compris de faire du tri sans recharger, etc. Jusqu'ici tout va bien
Mais là, c'est le drame: je veux donc faire apparaitre l'arbre dans une div par l'intermédiaire d'une transformée, et malgré toutes mes tentatives, le contenu apparait sans mise en forme.
Voici le code:
function triggerNaviguer() {
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
affiche(xmlhttp.responseXML,chargeXSL(),"repAdresse","liens");
affiche(xmlhttp.responseXML,chargeXSL(),"repGalerie","galerie");
}
}
function affiche(xmlObject,xslObject,portion,idObject) {
if (window.XSLTProcessor)
{
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslObject);
var fragment= xsltProcessor.transformToFragment(xmlObject.getElementsByTagName(portion).item(0),document);
document.getElementById(idObject).appendChild(fragment);
} else {
document.getElementById(idObject).innerHTML = xmlObject.getElementsByTagName(portion).item(0).transformNode(xslObject);
}
}
Un XSL simpliste pour l'instant
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="dossier">
<xsl:variable name="iaction" select="action"/>
<xsl:variable name="urllink" select="lien"/>
<xsl:variable name="urlvisu" select="visu"/>
<a href='#' onclick='{iaction}({$urllink})'>
<xsl:value-of select="nom"/>
<img src='{$urlvisu}' align='absmiddle' />
</a>
</xsl:template>
</xsl:stylesheet>
Un bout de XML pour l'exemple
<reponse>
<repAdresse>
<dossier>
<lien> </lien>
<visu>img/ordi.gif</visu>
<nom>Dossier actuel :</nom>
<action>none</action>
</dossier>
<dossier>
<lien>fantascope%2F</lien>
<visu>img/miniclose.gif</visu>
<nom>fantascope</nom>
<action>naviguer</action>
</dossier>
<dossier>
<lien>fantascope%2FPhotos%2F</lien>
<visu>img/miniclose.gif</visu>
<nom>Photos</nom>
<action>naviguer</action>
</dossier>
</repAdresse>
</reponse>
Je suis preneuse de toute info, surtout si quelqu'un a plus simple comme solution ...
Merci d'avance