IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs XML Discussion :

[DOM] [javascript] Problème de génération de noeuds XML


Sujet :

APIs XML

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut [DOM] [javascript] Problème de génération de noeuds XML
    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 :

    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>
    (Ici app1 a 3 colonnes, et app2 a 2 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 à :
    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>
    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
    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);
          }
      }
    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.

    Comment mettre les "colonnes " comme fils de "app", et non pas de nouveaux grappe XML dans le doc ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Pour ce positionner sur le bon noeud avant de faire un ajout via appendchild je conseille XPTAH avec le selectnodes de IE ou le evaluate de FX

Discussions similaires

  1. [DOM] Javascript et function DOM
    Par topolino dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 17h55
  2. [DOM] Javascript et DOM
    Par topolino dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/12/2005, 00h27
  3. [DOM] [javascript] pb IE/Firefox
    Par topolino dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/12/2005, 10h20
  4. [XML][XSL][DOM][JAVASCRIPT]melanger le tout, laisser reposer
    Par mitsein dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/07/2004, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo