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

XSL/XSLT/XPATH XML Discussion :

[XSLT] Menu "NF" à l'aide d'un xml (éventuellement avec javascript)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut [XSLT] Menu "NF" à l'aide d'un xml (éventuellement avec javascript)
    Bonjour.
    J'ai passé des heures à chercher, chercher et rien, de vagues bidouilles sans issue.

    J'ai créé un xml. Je souhaite, par défaut, afficher tous les nom des trucs sur une page (sans leurs fils, à savoir les bidules). Ici je le fait à l'aide d'un xsl parce que je ne voyais pas d'autres solutions.

    Le problème est le suivant : lorsque l'on clique sur le nom d'un truc, je souhaitrais que s'affiche (sous celui-ci) tous ses chers enfants les bidules !
    Et quand on reclique, qu'ils disparaissent.

    En fait, c'est à peu près ce que ferait firefox avec les "+" et les "-" si vous regardez le fichier machins.xml avec firefox.

    C'est peut-être pas dur mais c'est impossible pour moi

    Voici la source du xml :
    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
    50
    51
    52
    53
    54
    55
    <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
     
    <?xml-stylesheet type="text/xsl" href="machins.xsl"?>
     
    <!DOCTYPE machins [
     
     <!ELEMENT machins (trucs+)>
     
      <!ELEMENT trucs (bidule+)>
     
      <!ATTLIST trucs nom CDATA #REQUIRED>
     
       <!ELEMENT bidule (#PCDATA)>
     
      <!ATTLIST bidule code ID #REQUIRED relatif IDREFS #IMPLIED>
     
    ]>
     
    <machins>
     
       <trucs nom="maison">
     
         <bidule code="A-1" relatif="A-2 A-4">porte</bidule>
     
         <bidule code="A-2"                  >fenêtre</bidule>
     
         <bidule code="A-3"                  >cheminée</bidule>
     
         <bidule code="A-4"                  >volet</bidule>
     
       </trucs>
     
       <trucs nom="voiture">
     
         <bidule code="B-1" relatif="B-3">néon K2000</bidule>
     
         <bidule code="B-2"              >volant qu'on pète type "moumoute" professionnel</bidule>
     
         <bidule code="B-3"              >sapin qui sent bon</bidule>
     
       </trucs>
     
       <trucs nom="boîte">
     
         <bidule code="C-1"                  >chaussure</bidule>
     
         <bidule code="C-2"                  >cassoulet</bidule>
     
         <bidule code="C-3" relatif="C-1 C-4">vampire</bidule>
     
         <bidule code="C-4"                  >pochtron</bidule>
     
       </trucs>
     
    </machins>
    Voici la source du fichier machins.xsl qui le représente PAR DEFAUT :


    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     <xsl:template match="/">
     
      <xsl:for-each select="machins/trucs">
     
       <span style="font: bold 12px verdana">
     
        <xsl:value-of select="@nom" /><br />
     
       </span>
     
    <span><br /></span>
     
      </xsl:for-each>
     
     </xsl:template>
     
    </xsl:stylesheet>

    Merci d'avance à tous.

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    tu trouvearas plus de reponse dans la forum html/javascrip je pense..


    sinon, tu met des id sur tes <div> englobants et tu joue sur la propriete "display" hidden/none...et avec du javascript basique tu auras ce que tu veux..

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut
    Bonjour.

    Je vais donc plutôt partir dans votre direction : le javascript.
    Oui, j'ai déjà essayé mais la façon dont je créé le xsl (avec xsl:for-each) ne me permet pas ça ; mon nouveau xsl sera par exemple :
    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
    <?xml version="1.0" encoding="iso-8859-1"?>
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     <xsl:template match="/">
     
      <xsl:for-each select="machins/trucs">
     
       <span style="font: bold 12px verdana">
     
        <xsl:value-of select="@nom" /><br />
     
       </span>
     
    <div id="toto">
     
    <xsl:for-each select="bidule">
     
        <span style="font: 9px verdana">
     
         <li>
     
          <xsl:value-of select="." />
     
         </li><br />
     
        </span>
     
    </xsl:for-each>
     
    </div>
     
    <span><br /></span>
     
      </xsl:for-each>
     
     </xsl:template>
     
    </xsl:stylesheet>
    Donc en fait, tous les div auront pour id "toto" et impossible de les différencier avec le javascript ...
    Merci.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Par défaut
    Bonjour.
    Je suis sur une piste donc pas besoin de répondre pour le moment ...
    Verdict : demain (nomalement!).
    Yves.
    http://www.serv-dep.com/annonces/

  5. #5
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    au lieu de faire

    pourquoi ne pas faire un truc ds le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="concat('toto',position())">
    ?

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