Salut,
Je developpe une interface logiciel avec XML/XSL, et j'ai un problème sur la création de noeuds en javascript. En effet, je stick dans ma base de données des noms de colonnes que je vaux afficher, par exemple : "col1, col2, col3" correspondans à une application "app1", j'ai une requête sql qui me retourne pour chaque application, le nom "app1", et les colonnes .
Un javascript prend le text des colonnes, le découpe et génère un noeud "colonnes", avec des neaud fils "colonne", de valeur la valeur des colonnes.
Pour mon exemple, j'ai eu :
(Ici app1 a 3 colonnes, et app2 a 2 colonnes).
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 <applications> <application> <nom> app1 </nom> </application> <application> <nom> app2 </nom> </application> </applications> <colonnes> <colonne> col1 </colonne> <colonne> col2 </colonne> <colonne> col3 </colonne> </colonnes> <colonnes> <colonne> col1 </colonne> <colonne> col2 </colonne> </colonnes>
Mai c'est clair que ça va compliquer énormément le travail pour afficher pour chaque app les colonnes correspondant.
Bref, l'emplacement des noeuds colonnes n'est pas bon, dans mon javascript je met : OutputDoc.AppendChild("COLONNES","");
et puis pour chaque colonnes j'ajoute les fils correspondant.
Ce que je dois écrire c'est plutot comme "app1".append child("colonnes"), ou un truc comme ça , pour ajouter pour chaque application ces noeuds colonnes.
Ce que je dois avoir en XML doit ressembler à :
Voici mon code javascript :
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 <applications> <application> <nom> app1 </nom> <colonnes> <colonne> col1 </colonne> <colonne> col2 </colonne> <colonne> col3 </colonne> </colonnes> </application> <application> <nom> app2 </nom> <colonnes> <colonne> col1 </colonne> <colonne> col2 </colonne> </colonnes> </application> </applications>
Ce bout de code javascript s'éxécute juste après l'extraction d'une application (nom+colonnes) donc juste après la création d'un noeud application.
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 function APPLICATION_AfterInternalInstruction(XMLInstruction, InputDoc, OutputDoc, Input, Output) //Gestion des colonnes visibles (découpe et construction d'une grappe) //colonnes visibles est le champ texte qui contient les noms des colonnes à produire var sCols = Context.GetValue("COLONNESVISIBLES"); var sChp = ""; var grappeChamps = OutputDoc.AppendChild("COLONNES",""); while (sCols != "") { var pos = sCols.indexOf(","); if (pos == -1) // pas de virgule = il n'y a qu'un seul champ { sChp = sCols; grappeChamp.AppendChild("COLONNE",sChp); sCols = ""; } else { sChp = sCols.substring(0,pos); grappeChamp.AppendChild("COLONNE",sChp); sCols = sCols.slice(pos+1); } }
Comment mettre les "colonnes " comme fils de "app", et non pas de nouveaux grappe XML dans le doc ?
Merci d'avance.
Partager