Bonjour,

je viens à vous après de longues heures de lutte acharnée face à JS que je découvre à peine (ci-après nommé Miguel), XML/XSL (de même, et ci-après nommé Pedro) et la "new technology" Ajax (tout pareil que Miguel et Pedro).

Je vous explique mon problème : j'ai mon fichier afficherTableau.xsl dans lequel j'ai un tableau que je génère via un XML (donc, en XSL). Jusque là ça va. En cliquant sur une des lignes du tableau, je veux accéder à un attribut de l'élément cliqué. J'affiche cela dans ma lightbox, une div cachée dans ma page (qui marche, elle).

Bon, mon premier problème, c'est comment sauvegarder l'id de ma ligne (cet id est en fait la position [fonction position() de XSL] du noeud affiché dans ma ligne) sur laquel je clique afin de la donner à ma fonction qui affichera les détails de cette ligne ? Après quelques manipulations, je n'arrive à rien de probant.

Mais surtout, je tente sans résultat de récupérer ces informations à afficher (des attributs de mes éléments dans le tableau) en utilisant Ajax (enfin, on va plutôt dire que j'utilise XMLHttpRequest). Je viens d'être jeté dans le monde de la programation ouèb et beaucouop de chose m'échappent.

[edit]
Pour donner un petit exemple pour être plus clair, disons que ceci est mon fichier XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<A>
    <a1>
        <a11 attribut1="a" attribut2="b" />
    </a1>
    <a2>
        <a21 attribut1="a123" attribut2="b123" />
        <a22 attribut1="a213" attribut2="b213" />
        <a23 attribut1="a321" attribut2="b321" />
    </a2>
    [...]
J'affiche dans mon tableau tous les attributs "attribut1" des éléments "a2x" et je veux, en cliquant sur une des lignes de mon tableau, accéder à l'attribut "attribut2" de l'élément cliqué afin de l'afficher.

Pour cela, je veux sauvegarder l'id de ma ligne (cad la position du noeud), appeler le fichier XML, lire le noeud n°id et afficher l'attribut qui m'intéresse.
[/edit]

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
function getMessage(id)
{
	var req = null;
 
	if (window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
		if (req.overrideMimeType)
		{
			req.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)
		{
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
 
	req.onreadystatechange = function()
	{
		if(req.readyState == 4)
		{
			if(req.status == 200)
			{
				// process a XML document here
				var doc = req.responseXML;
				var element = doc.getElementsByTagName("chemin-en-xpath?").item(0);
				document.getElementById("meuh").innerHTML = element.firstChild.data;
				//document.getElementById("meuh").innerHTML = element;
 
			}
			else
			{
				document.getElementById("meuh").innerHTML = "Error: returned status code " + req.status + " : " + req.statusText;
			}
		} else {
			document.getElementById("meuh").innerHTML = "Error perso" ;
		}
	};
	req.open("GET", "test.xml", true);
	req.send(null);
}
J'ai récupéré la base de ce code sur un tuto très bien fait Malheureusement, chez moi, le seul affichage que j'obtiens est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Error: returned status code 0 :
Je pense que mes problèmes viennent de ces 2 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var element = doc.getElementsByTagName("chemin-en-xpath?").item(0);
Auquel cas, je n'ai pas compris le principe du parcours du fichier grâce à getElementByTagName. Peut-être est-ce impossible de lire un XML avec ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req.open("GET", "test.xml", true);
Là, je me dis qu'au lieu de mettre l'url (relative) de mon fichier, c'est plutôt celle du serveur qu'il faut mettre ? Si oui, quoi utiliser ? et comment tester en local ?

Je vous avous que je n'arrive plus à comprendre quoi que ce soit :-/
Je vous demande donc votre aide.

Merci d'avance.