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

JavaScript Discussion :

Affichage en javascript de XML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut Affichage en javascript de XML
    Bonjour à tous,

    J'ai du XML mis en page par une XSL qui elle contient du javascript pour une sortie HTML.
    Je cherche a afficher en info bulle du contenu XML.

    Le problème est que je n'arrive pas à afficher le texte grâce au javascript.

    J'ai ceci pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p onmouseover="montre('<xsl:value-of select="test/Notes" />');" onmouseout="cache();"><xsl:value-of select="test/Term" /></p>
    Ce serait dû aux chevrons... mais je n'en sais pas assez pour le confirmer.

    Quelques petites idées ?

    Merci d'avance,

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    erreur de "! (regarde la couleur)
    ->forum XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:attribute name="onmouseover">
          montre('<xsl:value-of select="test/Notes" />')
      </xsl:attribute>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Merci pour le coup de main.

    J'ai mis ça dans mon code, mais rien ne se passe.
    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
     
    <div>
            <xsl:attribute name="id">
                     <xsl:value-of select="@id"/>
            </xsl:attribute>
     
    	<xsl:attribute name="onmouseover">
    		montre('<xsl:value-of select="sect2/title"/>')
    	</xsl:attribute>
     
           <xsl:attribute name="onmouseout">
    	       cache('<xsl:value-of select="sect2/title"/>')
           </xsl:attribute>
     
    	<h1><xsl:value-of select="title" /></h1>
     
    </div>
    Ça serait pas parce que je ne lui indique pas l'attribut à afficher ou masquer ?

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Aucune idée, je ne connais ni ton code ni le document xml

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    matthieu et ta boule de christal ?
    tu n'y met pas du tiens sur le coup !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Quelques petites infos de plus pour la route...

    Le doc 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
     
    <book>
    	<chapter id="chapitre1">
    		<sect1 id="chap1sec1">
    			<title>chap1sec1</title>
    		</sect1>
    ...
    		<sect1 id="chap1sec2">
    			<title>chap1sec2</title>
    		</sect1>
    	</chapter>
    ...
    	<chapter id="chapitre2">
    		<sect1 id="chap2sec1">
    			<title>chap2sec1</title>
    		</sect1>
    ...
    		<sect1 id="chap2sec2">
    			<title>chap2sec2</title>
    		</sect1>
    	</chapter>
    </book>
    La XSL
    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
     
    <xsl:template match="book/chapter">
    	<xsl:for-each select="sect1">
    		<p>
    			<xsl:attribute name="onmouseover">montre('<xsl:value-of select="./@id"/>"')</xsl:attribute>
    			<xsl:attribute name="onmouseout">cache('<xsl:value-of select="./@id"/>"')</xsl:attribute>
    			<xsl:attribute name="class">titre</xsl:attribute>
    			Mon titre
    		</p>
     
    		<div>
    			<xsl:attribute name="id"><xsl:value-of select="./@id" /></xsl:attribute>
    			<xsl:attribute name="class">monstyle</xsl:attribute>
    			<p>Bonjour, c'est cool, ça marche</p>
    		</div>
     
    	</xsl:for-each>	
    </xsl:template>
    Si je ne me trompe pas, il faut nommer les div dans la CSS et les mettre en diplay:none. Mais je ne vois pas trop comment les nommer puisqu'elles sont générées par la xsl.

    Merci,

  7. #7
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    fais ton slyte par class!
    .monstyle{diplay:none}

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Ca, ça marche nikel pour masquer le contenu mais rien ne s'affiche au passage de la souris

    Ca doit venir de mon javascript alors...

    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
    <script type="text/javascript">
    <!--
      function montre(id) {
       if (document.getElementById) {
        document.getElementById(id).style.display="block";
      } else if (document.all) {
        document.all[id].style.display="block";
      } else if (document.layers) {
        document.layers[id].display="block";
      } }
     function cache(id) {
       if (document.getElementById) {
        document.getElementById(id).style.display="none";
      } else if (document.all) {
        document.all[id].style.display="none";
      } else if (document.layers) {
        document.layers[id].display="none";
      } }
    //-->
    </script>
    Merci encore

  9. #9
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    .monstyleVisible{display:block}

    .monstyleCache{display:none}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      function montre(id) {
        document.getElementById(id).className="monstyleVisible";
       }
     function cache(id) {
       document.getElementById(id).className="monstyleCache";
     }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Heuuu, là, je suis perdu.

    En gros, il faut que la class change en fonction de si c'est onmouseover ou pas ?

  11. #11
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Citation Envoyé par broise Voir le message
    Heuuu, là, je suis perdu.

    En gros, il faut que la class change en fonction de si c'est onmouseover ou pas ?
    oui


    sous ie
    document.getElementById(id).style.display
    peut planter car le "style"n'est pas initialisé (null, et ne peut donc pas avoir de propriété display)

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Ça ne marche toujours pas... :-(
    Mais ce n'est qu'une question de temps... enfin, j'espère.

    Les fichiers sont en pièce jointe. Un petit coup de main d'expert devrait remettre tout ça dans l'ordre ou me remettre sur le droit chemin.

    La norme ici est IE6.

    Merci encore,
    Fichiers attachés Fichiers attachés

  13. #13
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    display
    j'ai mal taper dsl ! display avec un s

    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
    56
    57
    58
    59
    60
    61
    62
    63
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="/">
     
     
    	<html>
    		<head>
    			<title>Test</title>
     
    <script type="text/javascript">
     
    function montre(id) {
        document.getElementById(id).className="monstyleVisible";
       }
     function cache(id) {
       document.getElementById(id).className="monstyleCache";
     }
     
    </script> 
     
    <style>
    .monstyleVisible{display:block}
     
    .monstyleCache{display:none} 
    .titre{
    	color:#000099;
    	font-size:12px;
    }
    </style>
     
    </head>
    <body>
    <xsl:apply-templates/>
     
    </body>
    </html>
     
     
    </xsl:template>
     
     
     
    <xsl:template match="book/chapter">
    	<xsl:for-each select="sect1">
    		<br />
    		<p>
    			<xsl:attribute name="onmouseover">montre('<xsl:value-of select="./@id"/>')</xsl:attribute>
    			<xsl:attribute name="onmouseout">cache('<xsl:value-of select="./@id"/>')</xsl:attribute>
    			<xsl:attribute name="class">titre</xsl:attribute>
    			<xsl:value-of select="@id" />
    		</p>
     
    		<div class="">
    			<xsl:attribute name="id"><xsl:value-of select="./@id" /></xsl:attribute>
    			<xsl:attribute name="class">monstyleCache</xsl:attribute>
    			<p>Bonjour, c'est cool, ça marche</p>
    		</div>
     
    	</xsl:for-each>
    </xsl:template>
     
    </xsl:stylesheet>


    ps : pour les caractères spéciaux en com (<!-- -->) ajoute CDATA

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Ça ne donne rien...

  15. #15
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Citation Envoyé par broise Voir le message
    Ça ne donne rien...
    cad?

    ca marche sous ie 7 et ff!

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Oki, je reteste tout ça alors.

    Merci,

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    En fait tout est affiché par défaut à l'affichage de ma page sous ie et sous ff.

    Le js c'est bien ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript">
    <!--
    document.getElementById(id).style.displays
    function montre(id) {
        document.getElementById(id).className="monstyleVisible";
       }
     function cache(id) {
       document.getElementById(id).className="monstyleCache";
     }
    //-->
    </script>
    Et la class par défaut je mets monstyleCache, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div>
    			<xsl:attribute name="id"><xsl:value-of select="./@id" /></xsl:attribute>
    			<xsl:attribute name="class">monstyleCache</xsl:attribute>
    			<p>Bonjour, c'est cool, ça marche</p>
    		</div>

  18. #18
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    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
    <![CDATA[
    <!--
    function montre(id) {
        document.getElementById(id).className="monstyleVisible";
       }
     function cache(id) {
       document.getElementById(id).className="monstyleCache";
     }
     //-->
    ]]>
     
    ...
    <style>
    .monstyleVisible{display:block}
     
    .monstyleCache{display:none} 
    .titre{
    	color:#000099;
    	font-size:12px;
    }
    </style>
    <!--
    -->
    mets en commentaire pour xsl

    ps : dans ton fichier, j'ai vu aussi d'autres codes qui trainent (à supprimer)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    ça c'est mon xsl total
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="/">
     
     
    	<html>
    		<head>
    			<title>Test</title>
     
     
     
     
    <script>
    <![CDATA[
    <!--
    function montre(id) {
        document.getElementById(id).className="monstyleVisible";
       }
     function cache(id) {
       document.getElementById(id).className="monstyleCache";
     }
     //-->
    ]]>
     
    </script>
     
     
    <style>
    .monstyleVisible{display:block}
     
    .monstyleCache{display:none} 
    .titre{
    	color:#000099;
    	font-size:12px;
    }
    </style>
     
     
     
    </head>
    <body>
     
    <xsl:apply-templates/>
     
     
    </body>
    </html>
     
     
    </xsl:template>
     
     
     
    <xsl:template match="book/chapter">
    	<xsl:for-each select="sect1">
    		<br />
    		<p>
    			<xsl:attribute name="onmouseover">montre('<xsl:value-of select="./@id"/>"')</xsl:attribute>
    			<xsl:attribute name="onmouseout">cache('<xsl:value-of select="./@id"/>"')</xsl:attribute>
    			<xsl:attribute name="class">titre</xsl:attribute>
    			<xsl:value-of select="@id" />
    		</p>
     
    		<div>
    			<xsl:attribute name="id"><xsl:value-of select="./@id" /></xsl:attribute>
    			<xsl:attribute name="class">monstyleCache</xsl:attribute>
    			Texte qui s'affiche : <xsl:value-of select="@id" />
    		</div>
     
    	</xsl:for-each>
    </xsl:template>
     
    </xsl:stylesheet>
    J'ai viré le bout de javascript qui traînait

    Il faut changer des trucs dans le xml ?

  20. #20
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:attribute name="onmouseover">montre('<xsl:value-of select="./@id"/>')</xsl:attribute>
    			<xsl:attribute name="onmouseout">cache('<xsl:value-of select="./@id"/>')</xsl:attribute>
    tu as mis un " en trop pour les appel!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. javascript et xml
    Par vodasan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/09/2006, 10h33
  2. [XmlParser] Javascript Flux Xml
    Par tatemilio2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 16h33
  3. [javascript et xml]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/05/2006, 10h00
  4. Optimiser l'affichage d'un fichier XML de grosse taille...
    Par UnPeuPerdu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/06/2004, 16h01

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