cs_LoKus
Messages postés2Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention31 mars 2006
-
31 mars 2006 à 14:48
cs_LoKus
Messages postés2Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention31 mars 2006
-
31 mars 2006 à 18:22
Salut à tous,
J'ai crée un ensemble de fonction JS (à partir de scripts trouvés un peu partout sur internet) dont le but est de charger un fichier XML et un fichier XSL puis de transformer le fichier XML grâce au XSL et d'afficher la transformation dans un bloc.
Voici mon code :
<html>
<head>
<title>Test 4</title>
<script type="text/javascript" language="javascript">
function transform(xml, xsl, id) {
try { /* Navigateur basé sur Gecko. */
if (window.XSLTProcessor) {
var fragment;
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
fragment = xsltProcessor.transformToFragment(xml, document);
var target = document.getElementById(id);
target.appendChild(fragment);
document.appendChild(target);
}
else if (window.ActiveXObject) { /* ActiveX pour Internet Explorer. */
var target = document.getElementById(id);
target.innerHTML = xml.transformNode(xsl);
}
}
catch (e) {
return e;
}
}
function serv_reponse() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var xmldoc = http_request.responseXML;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
function load_xml(url) {
http_request = false;
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!http_request) {
alert('Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = serv_reponse;
http_request.open('GET', url, true);
http_request.send(null);
return http_request;
}
function load_file(xml_charger, xsl_charger, id) {
var xml = load_xml(xml_charger);
var xsl = load_xml(xsl_charger);
var fichier = transform(xml, xsl, id);
}
</script>
</head>
[# Faut que ca marche !]
</html>
Voici en quelques mots ce que j'essaye de faire :
1/. Au clik de la souris, la fonction "load_file" est appelée et elle a 3 arguments : l'adresse d'un fichier xml, l'adresse d'un fichier xsl et un l'id d'un bloc.
2/. Les fichiers XML et XSL sont chargés grâce à aux appels à la fonction "load_xml".
3/. La fonction "transform" est appelée afin de transformer le fichier XML en un ficher XHTML grâce au fichier XSL puis elle affiche le tout dans l'id du bloc.
Lorsque je clique sur le lien de ma page, rien ne se passe (Test), je vous demande donc votre aide pour faire fonctionner mon code.
cs_roro06
Messages postés732Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention29 octobre 2007 31 mars 2006 à 16:02
Bonjour
Après une rapide lecture, il faut déjà mettre
fichier = transform(xml, xsl, id); dans la fonction serv_reponse() qui est appelée de manière asynchrone, c'est à dire quand le serveur a fini d'envoyer la réponse, c'est à dire bien après (tout est relatif, bien sûr) l'appel de la fonction load_file.
De plus, attention aux var : ils déclarent une variable locale à la fonction dans laquelle elle est définie. Ici, ta fonction ne fait rien, mis à part t'alerter s'il y a eu un probleme, car ta variable fichier n'est connue que de la fonction serv_reponse.
autre chose :
au lieu de
alert('Un problème est survenu avec la requête.'); j'ai tendance à mettre :
alert("Erreur : " + http_request.status + "\n" + http_request.statusText); ca aide pour savoir si le prob vient du serveur.
cs_LoKus
Messages postés2Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention31 mars 2006 31 mars 2006 à 18:22
Merci de m'aider.
Je suis pas très bon en Javascript donc je comprend pas tout ce que tu
as dit. Serais-ce possible que tu me montres précisement quelles lignes
sont à modifier ?