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

XML/XSL et SOAP Discussion :

Arbre XML


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut Arbre XML
    Bonsoir

    J'aimerais générer un arbre XML à partir des données d'une base de données (MySQL). Il s'agit d'une table simple, qui contient une clé étrangère sur elle-même pour indiquer l'élément parent de l'enregistrement. Existe-t-il des outils ou des scripts simples qui permettent de faire ça ?

    D'autre part j'aimerais savoir comment générer une représentation graphique sous forme d'arbre des informations obtenues.

    Il s'agit à terme de créer un site qui permette une navigation graphique sous forme d'arbre, dont les branches correspondent à des éléments de la base de données.

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 74
    Par défaut
    salut, alors avant toute chose, il te faut définir le cadre de ton projet !!!

    Pourquoi xml ?? vas tu partager les données ?? si oui, travaille sur la structure du fichier (xml schema)

    Après tu pourras réaliser avec une feuille xsl, la transformation désirée. Je te donne un exemple :
    http://<br /> http://www.codeprojec...l_treeview.asp

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    641
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 641
    Par défaut
    Citation Envoyé par psyco2604
    salut, alors avant toute chose, il te faut définir le cadre de ton projet !!!

    Pourquoi xml ?? vas tu partager les données ?? si oui, travaille sur la structure du fichier (xml schema)

    Après tu pourras réaliser avec une feuille xsl, la transformation désirée. Je te donne un exemple :
    http://<br /> http://www.codeprojec...l_treeview.asp
    En fait, je ne vais pas développer moi même, seulement étudier la faisabilité. Il s'agit de créer un site qui permette une navigation à partir d'une arborescence (un arbre de connaissances en l'occurence). L'arborescence et les branches sont dynamiques, et sont liées à des informations dans la base de données (domaines de compétences, projets, personnes, etc...).

    Pour l'instant l'arborescence graphique est générée sous forme d'images, pas terrible pour les mises à jour. J'ai pensé à XML parce que ça permet de donner une représentation structurée des données (donc facile à mettre à jour), de constituer une arborescence et surtout de générer une représentation graphique en appliquant des transformations.

    Peut on facilement reconstituer l'arborescence sous la forme d'un arbre XML à partir des informations de filiations dans la table ? Comment appliquer des transformations pour générer une représentation graphique ? Est ce une bonne idée d'utiliser SVG pour ça ?

    Je recherche autant que possible une solution simple, qu'on pourra enrichir par la suite.

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1
    Par défaut
    J'ai été confronté à un problème similaire et la méthode suivante pourrait t'aider.
    1/ Le modèle possède une table des items : identifiant (PK), type (page HTML ou dossier), niveau (0= racine, 1, 2, ...), idparent (l'identifiant de l'élément parent). Par exemple, un élément rattaché à un élément de niveau 3 est de niveau 4.
    2/ Il faut un et un seul élément racine (niveau = 0)
    3/ Tu sélectionnes les éléments (classé par niveau ascendant, les parents avant les enfants).
    4/ Tu construits l'arbre XML en "raccrochant" les enfants aux parents...
    5/ Tu affiches l'arbre XML (fonction tree_walk(node)).

    Pour les mises à jour, tu dois veiller à mettre à jour le niveau des enfants. Exemple : si tu déplaces un dossier de niveau 2 vers le niveau 4 alors tu dois déplacer de 2 niveaux tous ses enfants. Sans cela, quand tu listes les éléments les enfants apparaîtraient avant les parents…

    Cette méthode évite les SELECT multiples : quels sont les enfants de cet élément, puis, quels sont les enfants des enfants trouvés, etc., ….

    'Selection des éléments
    If Rs.EOF Then
    ListerRessource = "Aucune ressource à afficher."
    Else
    Do until Rs.EOF
    iNom = Rs.Fields(0).Value
    iIDRess = Rs.Fields(1).Value
    iIdParent = Rs.Fields(2).Value
    iNiv = Rs.Fields(3).Value
    iType = Rs.Fields(4).Value
    Set NewElt = XmlLst.createNode("Element", "rs", "")
    If iIdParent = 0 Then
    Root.appendChild (NewElt)
    Else
    Root.selectSingleNode("//rs[@idElt='" & iIdParent& "']").appendChild(NewElt)
    'Complete les noeuds supérieures
    If iType = 2 Then
    iC = iNiv
    Set noeudParent = Root.selectSingleNode("//rs[@idElt='" & iIdParent& "']")
    Do until iC = 0
    lst_res = noeudParent.getAttribute("lst_res")
    noeudParent.setAttribute("lst_res") = lst_res & "+" & iIdRess
    Set noeudParent = noeudParent.parentNode
    iC = iC -1
    Loop
    NewElt.setAttribute "lst_res", "+" & iIdRess
    End If
    End If
    NewElt.setAttribute "idElt", iIdRess
    NewElt.setAttribute "iNom", iNom
    NewElt.setAttribute "iType", iType
    If iType = 2 Then
    nbType2 = nbType2 + 1
    End If

    Rs.MoveNext
    Loop
    If nbType2 > 0 Then
    ListerRessource = tree_walk(Root)
    Else
    ListerRessource = "Aucune ressource à afficher."
    End If
    End If


    Call CloseCnxn
    End Function

    Public function tree_walk(node)
    dim nodeName
    indent=indent+2

    For Each child In node.childNodes
    If (child.getAttribute("iType") = 1 and child.hasChildNodes) or child.getAttribute("iType") = 2 Then
    Response.Write("<table><tr><td>")
    For i=1 to indent
    Response.Write("&nbsp;&nbsp;")
    Next
    If child.nodeType<3 Then
    Select case child.getAttribute("iType")
    Case 1 : Response.Write("<img src='Images/rep_mini.gif'/>")
    Case 2 : Response.Write("<img src='Images/ress_mini.gif'/>")
    End Select
    Response.Write("</td><td onmouseout=this.className='inactif' onmouseover=this.className='actif'>")
    hStr = "<a " _
    & "href='Javascript:GetRessources(""" & child.getAttribute("lst_res") _
    & """,""" & child.getAttribute("iNom") & """)' class='HttpLink'" _
    & ">" & child.getAttribute("iNom") & "</a>"
    Response.Write(hStr & "</td></tr></table>")
    End If
    If (child.hasChildNodes) Then
    tree_walk(child)
    End If
    End If
    Next
    indent=indent-2
    End function

Discussions similaires

  1. [Arbre XMl] Extraction d'un sous arbre
    Par tipaquo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/06/2005, 12h34
  2. Réponses: 2
    Dernier message: 03/06/2005, 11h00
  3. [XSLT] Arbre XML -> Arbre HTML
    Par FT dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 29/09/2004, 09h49
  4. [XML] comment récupérer un arbre xml posté par http ?
    Par tomperso dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/07/2004, 10h29
  5. XSL pour visualiser arbre XML sous forme de tableau en HTML
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 28/03/2003, 10h55

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