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 :

inverser l'affichage des colonnes et des lignes


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Par défaut inverser l'affichage des colonnes et des lignes
    Bonjour,

    Mon document xml est structuré comme suit :

    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
    <param> 
    <Reg idRegle="1">
        <Parametre>
          para1
        </Parametre>
        <Spec>
          aaaaa
        </Spec>
        <nom>
         name1
        </nom>
    </Reg>
     
    <Reg idRegle="1">
        <Parametre>
          para2
        </Parametre>
        <Spec>
          bbbbb
        </Spec>
        <nom>
         name2
        </nom>
    </Reg>
     
    </param>
    en utilisant xslt, comment inverser l'affichge des colonnes et des lignes.


    l' affichage que je souhaite avoir est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                   reg                                    reg
     
    param        para1                               para2
     
    Spec         aaaaaa                              bbbb
     
    nom           name1                              name2

    la création de colonnes reg, je veux qu'elle soit dynamique en comptant les nombre de reg dans le document xml.

    L'affichage se fera dans une page asp.net.

    Merci pour vos aides

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Il n'y a pas grand mystère pour ce genre de problèmes; il faut juste le faire avec une pensée preque linéaire. Je vais le faire avec quelques constructions qui vont être utiles en général si vous ne connaissiez pas déjà.
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" omit-xml-declaration="yes" />
    <xsl:template match="/">
        <html>
        <body>
        <table border="1">
            <tr>
                <td>&#xa0;</td>
                <xsl:for-each select="/param/Reg">
                    <td><xsl:value-of select="concat('Reg',position())" /></td>
                </xsl:for-each>
            </tr>
            <xsl:apply-templates select="param" />
        </table>
        </body>
        </html>
    </xsl:template>
    <xsl:template match="param">
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'Parametre'" />
                    <xsl:with-param name="node" select="Parametre" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'Spec'" />
                    <xsl:with-param name="node" select="Spec" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'nom'" />
                    <xsl:with-param name="node" select="nom" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
    </xsl:template>
     
    <xsl:template name="row-data">
        <xsl:param name="title" />
        <xsl:param name="node" />
        <xsl:if test="position()=1">
            <td><xsl:value-of select="$title" /></td>
        </xsl:if>
        <td>
            <xsl:choose>
                <xsl:when test="normalize-space($node)=''">
                    <xsl:value-of select="'&#xa0;'" />
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="normalize-space($node)" />
                </xsl:otherwise>
            </xsl:choose>
        </td>
    </xsl:template>
    </xsl:stylesheet>

  3. #3
    Membre averti
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Par défaut
    Citation Envoyé par tsuji Voir le message
    Il n'y a pas grand mystère pour ce genre de problèmes; il faut juste le faire avec une pensée preque linéaire. Je vais le faire avec quelques constructions qui vont être utiles en général si vous ne connaissiez pas déjà.
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" omit-xml-declaration="yes" />
    <xsl:template match="/">
        <html>
        <body>
        <table border="1">
            <tr>
                <td>&#xa0;</td>
                <xsl:for-each select="/param/Reg">
                    <td><xsl:value-of select="concat('Reg',position())" /></td>
                </xsl:for-each>
            </tr>
            <xsl:apply-templates select="param" />
        </table>
        </body>
        </html>
    </xsl:template>
    <xsl:template match="param">
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'Parametre'" />
                    <xsl:with-param name="node" select="Parametre" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'Spec'" />
                    <xsl:with-param name="node" select="Spec" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
        <tr>
            <xsl:for-each select="Reg">
                <xsl:call-template name="row-data">
                    <xsl:with-param name="title" select="'nom'" />
                    <xsl:with-param name="node" select="nom" />
                </xsl:call-template>
            </xsl:for-each>
        </tr>
    </xsl:template>
     
    <xsl:template name="row-data">
        <xsl:param name="title" />
        <xsl:param name="node" />
        <xsl:if test="position()=1">
            <td><xsl:value-of select="$title" /></td>
        </xsl:if>
        <td>
            <xsl:choose>
                <xsl:when test="normalize-space($node)=''">
                    <xsl:value-of select="'&#xa0;'" />
                </xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="normalize-space($node)" />
                </xsl:otherwise>
            </xsl:choose>
        </td>
    </xsl:template>
    </xsl:stylesheet>

    Merci pour votre réponse, ca m'a aidé.

    Je suis débutante en xslt.Je veux ajouter dans la table déjà créée une colonne contenant un boutton radio pour chaque ligne. et par la suite, je veux récupérer la valeur du boutton radio séléctionné(en code behind C#)afin de mettre des mises à jour sur la ligne.

    J'ai ajouter un input radio mais quand je selectionne deux bouttons ils restent tous les deux selectionné.

    Merci pour vos aides

  4. #4
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    J'ai ajouter un input radio mais quand je selectionne deux bouttons ils restent tous les deux selectionné.
    Là le soucis est du côté du HTML ou du javascript, mais pas XML.
    Après, je te conseil fortement de créer d'abord un modèle en HTML/CSS/javascript (ou ce que tu veux pour ton interface), puis une fois celui-ci au point, de le généré à partir de XSL. Cette démarche pourra t'apparaitre, à priori, comme une perte de temps.

  5. #5
    Membre averti
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Par défaut
    Citation Envoyé par polymorphisme Voir le message
    Bonjour,


    Là le soucis est du côté du HTML ou du javascript, mais pas XML.
    Après, je te conseil fortement de créer d'abord un modèle en HTML/CSS/javascript (ou ce que tu veux pour ton interface), puis une fois celui-ci au point, de le généré à partir de XSL. Cette démarche pourra t'apparaitre, à priori, comme une perte de temps.
    Merci pour votre réponse.

    Mon souci est tout d'abord comment ajouter, dans xsl, une colonne dans la table qui va contenir un boutton radio pour chaque ligne.
    Puis comment récupérer, en code c#, la valeur du boutton radio selectionné.

    Merci pour vos aides

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par pigeon2011 Voir le message
    Mon souci est tout d'abord comment ajouter, dans xsl, une colonne dans la table qui va contenir un boutton radio pour chaque ligne.
    Grosso-modo comme en HTML, puisque c'est exactement ce qui est généré :
    - Si ce n'est pas déjà fait il faut encadrer tous les contrôles d'un <form> ... </form>
    - Chaque radio button se crée avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" name="le_meme_nom_pour_tous_les_boutons" value="la_valeur_de_ce_bouton" />
    Citation Envoyé par pigeon2011 Voir le message
    Puis comment récupérer, en code c#, la valeur du boutton radio selectionné.
    Sorry, no habla C#. Mais là encore ça marche comme si c'était du HTML, puisque c'est du HTML.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [2008] Inversion des colonnes et des lignes sur une table
    Par anonymous-slacker dans le forum Développement
    Réponses: 4
    Dernier message: 18/03/2015, 18h08
  2. affichage des colonnes sur 2 lignes !
    Par DBA_doom dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/05/2007, 15h44
  3. Regrouper des colonnes dans une ligne
    Par aturlan dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2006, 21h05
  4. Pb SQL, affichage de l'entete des colonnes
    Par Yooops Up dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2005, 14h10
  5. [VB.NET] DataGrid : titre des colonnes sur deux lignes
    Par Lahouari dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/12/2004, 14h44

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