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 :

Xml, xsl et HTML problème d'affichage


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Xml, xsl et HTML problème d'affichage
    Je suis sur un problème et je ne comprends pas bein la methode muench. Il me semble qu'eel s'applique pour des outputs xml et moi je cherche un affichage dans ma page HTML.
    Merci de votre indulgence vu que je suis plus que débutant.


    Voilà donc mon xml:

    Code XML : 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
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <?xml-stylesheet type="text/xsl" href="essai.xsl"?> 
    <racine> 
      <mailbox> 
        <ID>MU000051</ID> 
        <batch>919</batch> 
        <file>CRM.CLIENT</file> 
        <lenght>12512070</lenght> 
        <date>11/03/21-09:11</date> 
        <status>CRTLZO</status> 
        <user>MU000051</user> 
      </mailbox> 
      <mailbox> 
        <ID>MU000279</ID> 
        <batch>246</batch> 
        <file>test.first</file> 
        <lenght>4008</lenght> 
        <date>11/03/21-14:35</date> 
        <status>ARZO</status> 
        <user>ceadmin</user> 
      </mailbox> 
      <mailbox> 
        <ID>MU000279</ID> 
        <batch>246</batch> 
        <file>test.first</file> 
        <lenght>4008</lenght> 
        <date>11/03/21-14:40</date> 
        <status>ARZO</status> 
        <user>ceadmin</user> 
      </mailbox> 
      <mailbox> 
        <ID>MU000279</ID> 
        <batch>246</batch> 
        <file>test.first</file> 
        <lenght>4008</lenght> 
        <date>11/03/21-14:42</date> 
        <status>ARZO</status> 
        <user>ceadmin</user> 
      </mailbox> 
      <mailbox> 
      <mailbox> 
        <ID>MU000051</ID> 
        <batch>781</batch> 
        <file>CRM.CLIENT</file> 
        <lenght>12511956</lenght> 
        <date>11/03/21-20:03</date> 
        <status>CRTLZO</status> 
        <user>MU000051</user> 
      </mailbox> 
    </racine>

    J'ai donc deux mailbox MU00051 et MU000279 qui sont répétées.
    Dans mon affichage, je ne voudrais avoir qu'une seule fois leur nom de façon à ensuite permettre une selection et afficher la liste des fichiers (si je trouve comment faire).

    Donc mes problèmes:

    - Comment n'avoir qu'une seule fois le nom de la mailbox dans mon déroulant "select"
    - Comment récuperer le choix pour pouvoir faire un affichage des fichiers relatifs à la mailbox choisie?

    Voici mon fichier xsl :
    Code XSL : 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
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 
      <xsl:template match="/"> 
        <html> 
          <head> 
            <link rel="stylesheet" type="text/css" href="catalogue.css" /> 
            <title>Essai de fenetre</title> 
            <base target="_new" /> 
            <BODY> 
              <form> 
                <fieldset> 
                  <legend>Selection</legend> 
                  <span> 
                    <select ID="liste" selected="selected" onchange="changeButton(this)"> 
                      <xsl:for-each select="//mailbox[ID]" order-by="ID"> 
                        <option> 
                          <xsl:value-of select="ID" /> 
                        </option> 
                      </xsl:for-each> 
                    </select> 
                  </span> 
                </fieldset> 
              </form> 
            </BODY> 
          </head> 
        </html> 
      </xsl:template> 
    </xsl:stylesheet>


    J'ai étudié dans xpath et ça devrait donner:

    /racine/mailbox[not( preceding::ID = ID )]/ID

    D'ailleurs dans xpathbuilder ça marche super.

    Mais quand je modifie mon xsl:for-each select ça plante. Il n'aime pas les "::".


    Si quelqu'un a une idée je suis prenneur.

    Merci

    Bernard

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Commençons par un cours de HTML, c'est quoi cette balise BODY dans la balise HEAD ?

    Une structure HTML Basique c'est :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
      <head>
        <!-- Mon titre, mes métadonnées, mes scripts, mes CSS, etc. -->
      </head>
      <body>
        <!-- Le contenu de ma page -->
      </body>
    </html>

    Après il y a une petite erreur dans ton XML mais c'est peut être dû à un copier/coller. Il y a une balise mailbox qui commence vers la fin mais qui ne finit pas.

    Pour ton premier problème, je pense que tu es sur la bonne voie mais tu ne récupère peut être pas le bon élément, tente quelque chose comme :
    Code XSL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <select ID="liste" selected="selected" onchange="changeButton(this)"> 
      <xsl:for-each select="//mailbox[not( preceding::ID = ID )]">
        <xsl:sort select="ID"/>
        <option>
          <xsl:value-of select="ID" />
        </option>
      </xsl:for-each>
    </select>
    ou peut être :
    Code XSL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select ID="liste" selected="selected" onchange="changeButton(this)"> 
      <xsl:for-each select="//mailbox">
        <xsl:sort select="ID"/>
        <xsl:if test="not( preceding::ID = ID )">
          <option>
            <xsl:value-of select="ID" />
          </option>
        </xsl:if>
      </xsl:for-each>
    </select>
    A ma connaissance, l'attribut order-by de xsl:for-each n'est pas valide. Il faut utilser la balise xsl:sort.

    Pour la deuxième question, tu as plusieurs choix. Soit tu joues avec l'attribut display block/none pour rendre visible le détail de ce que tu as choisi. Soit tu utilises de l'AJAX pour faire de l'appel asynchrone et charger tes éléments. Si tu es vraiment débutant, utilise la première solution.

    Dans ce cas, tu prépares tous tes blocks possiblement affichable et tu mets par défaut le display à none pour tout le monde. Et tu fais une fonction javascript qui mettra tout le monde à display none sauf celui que tu as sélectionné à display block.

    Et merci d'utiliser les balises CODE et l'indentation la prochaine fois (elle ne s'est pas faite toute seule ).

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse même si je n'ai pas encore tout compris (block/none).
    Mais je vais étudier ça.
    Pour l'histoire des balises c'est parce que l'ai fait des copy/paste mal cadrés. En fait dans mon html tout est en place comme tu l'as dit: html, head, /head, body, /body et /html.

    Je viens de découvrir l'ajout de balise code. Il est vrai que je ne vais pas souvent écrire dans les forums et ne suis pas habitué. I'm so sorry

    J'ai un peu avancé avec ce code. J'ai laissé de coté le probleme de suppression des doublons et remplacé le champ par un champ simple de saisie avec un javsacript pour récupérer mon champ:
    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
    <script type="text/javascript">
     
    function aller()
    {
    var valeur = document.forms['ID_FORMULAIRE'].elements['thembx'].value;
    document.location.href = 'newfile.xml?thembx='+valeur;
    }
    </script>
    </head>
    <body>
    <fieldset>
    <table>
    <tr>
    	<td width="70%"><h1>Statistics of Connect:Enterprise Xchange</h1></td>
    	<td width="25%">
    	<form id="ID_FORMULAIRE" method="GET">
    	  <fieldset>
    	  	<span>
            <label>Select a Mailbox</label><input size="8" type="text" name="thembx"/>
    		<input type="submit" name="submit" value="submit" onclick="aller()"/>
    		</span>
          </fieldset>
    	</form>
    	</td>
    </tr>
    </table>
    </fieldset>
    Je commence donc avec l'URL "U:\Travail\Scripts\newfile.xml", après introduction d'une valeur, j'ai bien ma valeur qui est prise en compte puisque je vois l'URL: "file:///U:/Travail/Scripts/newfile.xml?thembx=MU000051".
    mais alors là je ne vois pas comment exploiter thembx dans la suite de mon html:
    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
    <fieldset>
    <legend> Status Explanation </legend>
    <table>
    <caption>
    A - Added Offline | D - Flagged for Delete | I - Incomplete Collection | C - Collected online | T - Online Transmit Done | 
    R - Online Request Allowed | E - Extracted batch | M - Multiple transmission | 
    P - Transmission in Progress | U - Batch Unextractable | N - Batch Nontransmittable | B - BSC | F - FTP | W - AS2 | K - EBCDIC | 
    H - HTTP Y - BINARY | Q - ASYNC | G - SSL | O - Batch Encryption | Z - ASCII | L - SSHFTP</caption>
    <thead>
     <tr>
      <td>Mailbox</td>
      <td>Batch ID</td>
      <td>File Name</td>
      <td>Lenght</td>
      <td>Status</td>
      <td>Date</td>
      <td>User</td>
     </tr>
     </thead>
     <tbody>
     
    <xsl:for-each select="/racine/mailbox[ID='thembx']" order-by="+file">
    <!--   <xsl:choose>
    	<xsl:when test=".[ID='$valeur']">
     -->
     <tr>
      <td><xsl:value-of select="ID"/></td>
      <td><xsl:value-of select="batch"/></td>
      <td><xsl:value-of select="file"/></td>
      <td><xsl:value-of select="lenght"/></td>
      <td><xsl:value-of select="status"/></td>
      <td><xsl:value-of select="date"/></td>
      <td><xsl:value-of select="user"/></td>
     </tr>
    <!--  </xsl:when>
      </xsl:choose> -->
     </xsl:for-each> 
     
     </tbody>
    </table>
    </fieldset>
    </body>
     
    </html>
    </xsl:template> 
    </xsl:stylesheet>
    Je pense que je n'utilise pas bien ma variable mais je n'ai rien trouvé sur le net pour m'expliquer comment l'utiliser.
    Merci de ton aide.

    Bernard

Discussions similaires

  1. [HTML] Problème d'affichage
    Par Rayek dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/06/2006, 16h24
  2. Perl/HTML problème d'affichage
    Par MissCélia dans le forum Web
    Réponses: 7
    Dernier message: 16/05/2006, 15h15
  3. xml + xsl + balise html
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 09/02/2006, 10h40
  4. [XML][XSL]probleme html dans balise xml
    Par chateau64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/12/2005, 11h42
  5. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30

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