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 :

Afficher valeurs d'un tableau


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 27
    Par défaut Afficher valeurs d'un tableau
    Salut
    j'ai une servlet java qui comprend tableau des chaines des caractères,j'ai passé ce tableau vers un fichiers xsl via la méthode transformer.setParameter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     String titres=Arrays.toString(titress);
           	transformer.setParameter("tableau", titres);
    j'ai défini le paramètre de tableau dans le fichier xslt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="tableau"/>
    j'ai fait l'affichage des valeurs de tableau avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <tr><td colspan="2">Les valeurs de tableau de titres:<xsl:value-of select="$tableau"/></td></tr>
    j'ai arrivé a un affichage comme suit:

    -En fait,je besoin de parcourir le tableau case par case de genre "$tableau[i]" pour que je puisse afficher les valeurs de tableau chacune dans un <td>tableau[i]</td>...,merci pour l'aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Hum. N'importe quoi qui t'a parlé de XSLT, <xsl:stylesheet>, <xsl:template>, <xsl:value-of> et <xsl:param>, aurait dû aussi te parler de <xsl:for-each>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 27
    Par défaut Utiliser les variables de type tableau dans xslt
    Citation Envoyé par thelvin Voir le message
    Hum. N'importe quoi qui t'a parlé de XSLT, <xsl:stylesheet>, <xsl:template>, <xsl:value-of> et <xsl:param>, aurait dû aussi te parler de <xsl:for-each>.
    C'est quoi le "N'importe quoi"!!! c'est comme vous avez vu :servlet contient qui contient un tableau des chaines des caractères, j'applique a cet tableau un fichier xslt,je passai ce tableau vers xsl via la méthode transformer.setParameter("tableau", titres);
    par la suite j'ai afficher les valeurs de cet tableau via la balise <xsl:value-of select="$tableau"/>.
    -j'ai besoin d'afficher chaque valeur d'une case de tableau dans un <td>

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    "N'importe quoi" synonyme de "quoi que ce soit."

    De toute façon je t'ai déjà répondu, tu cherches <xsl:for-each>. Tu l'as trouvé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 27
    Par défaut Utiliser les variables de type tableau dans xslt
    non malheureusement ,j'ai aucun idée comment résoudre ce problème ,merci d'avance

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Hum, pourtant si je tape xslt <xsl:for-each> dans Google j'ai une pléthore d'exemples.
    Et si je tape xslt tutoriel c'est pas fameux d'accord, mais les tutoriels trouvés parlent quand même de <xsl:for-each>.

    Peut-être qu'il y a juste un bug. Peux-tu montrer les codes essayés ? Côté Java et côté XSLT ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    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
    J'avoue perdu dans les échanges et ne sais plus où le problème est; et j'en suis sûr il ne devrait pas un problème aussi abstract et obscur.

    Je veux donner quelque chose de concret en espérant comme ça on avance.

    Dans la côté de code java, on commence par avoir quelques données qu'on veut passer et utiliser dans la transformation xml. Je prends comme example "x", "y", et "z". D'où ils vienent n'est pas d'important, et en tout cas on arrive d'en avoir. En plus, je suppose un séparateur, "~", pour être concret. On a grosso modo quelque chose comme ça.
    Code java : 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
        private void doWork() {
            // etc etc
     
            //supposons par quelque moyen que ce soit on obient les donnée dans un array...
            String[] a=new String[]{"x","y","z"};
     
            String param;
            String separator="~";
            param=prepParam(a, separator);
     
            //etc etc...
     
            transformer.setParameter("tableau", param);
            //si on veut, on peut utiliser le défaut si on est sûr qu'il soit le même
            transformer.setParameter("separator", separator);
     
            //etc etc...
     
        }
     
        private String prepParam(String[] a, String separator) {
     
            StringBuffer sb=new StringBuffer();
            for (int i=0; i<a.length; i++) {
                sb.append(a[i]);
                if (i!=a.length-1) {
                    sb.append(separator);
                }
            }
            return sb.toString();
        }
    Et puis, dans la côté xsl, on peut faire ce minimal comme un petit test. J'ai mis certains paramètres avec une valeur par défaute pour le but d'illustration seulement: vous faites comme vous voulez.
    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
     
    <xsl:output method="html" encoding="utf-8" indent="yes" omit-xml-declaration="yes" />
    <xsl:param name="tableau" select="'a~b~c'" />
    <xsl:param name="separator" select="'~'" />
    <xsl:template match="/">
        <html><head></head><body>
        <table>
            <xsl:call-template name="breakup-and-process">
                <xsl:with-param name="s" select="$tableau" />
            </xsl:call-template>
        </table>
        </body></html>
    </xsl:template>
     
    <xsl:template name="breakup-and-process">
        <xsl:param name="s" />
        <xsl:param name="sep" select="'~'" />
     
        <xsl:choose>
            <xsl:when test="contains($s,$sep)">
                <xsl:call-template name="proc">
                    <xsl:with-param name="v" select="normalize-space(substring-before($s,$sep))" />
                </xsl:call-template>
                <xsl:call-template name="breakup-and-process">
                    <xsl:with-param name="s" select="substring-after($s, $sep)" />
                    <xsl:with-param name="sep" select="$sep" />
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:call-template name="proc">
                    <xsl:with-param name="v" select="$s" />
                </xsl:call-template>
            </xsl:otherwise>
        </xsl:choose>	
    </xsl:template>
     
    <xsl:template name="proc">
        <xsl:param name="v" />
        <tr><td><xsl:value-of select="$v" /></td></tr>
    </xsl:template>
    Je ne crois pas on a besoin d'autre chose pour en sortie la fonctionalité recherchée en xslt 1.0. On peut faire un peu plus facilement en xslt 2.0, mais, ce n'est même pas aussi instructive comme exercice du cerveau.

    ps Edition Un typo corrigé sur la ligne setParameter, param au lieu de titres, c'est évident.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    ....

    Un seul qui ne montre pas le moindre bout de code essayant l'évidence, c'est une chose. Mais deux, je me dis que ça vient peut-être de moi.

    Donc tous les deux, vous êtes en train de me dire que ceci :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String xsltFile = "test.xsl";
    String xmlFile = "test.xml";
    TransformerFactory factory = TransformerFactory.newInstance();
     
    Transformer transformer = factory.newTransformer(new StreamSource(xsltFile));
    String[] items = {"1", "2", "3"};
    transformer.setParameter("items", items);
    transformer.transform(new StreamSource(xmlFile),  new StreamResult(System.out));}

    Appliqué à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
      <xsl:param name="items"/>
     
      <xsl:template match="/">
        <xsl:for-each select="$items">
          <item>
            <xsl:value-of select="."/>
          </item>
        </xsl:for-each>
      </xsl:template>		
     
    </xsl:stylesheet>
    Ça ne marche pas, c'est ça ?
    Parce que chez moi ça fonctionne parfaitement. Vous comprendrez donc ma surprise devant le fait de ne pas avoir, une seule fois, montré ce code-là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    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
    Ça ne marche pas, c'est ça ?
    Non, sans se preciser quel est le moteur de transformation et quelle version il est pour être équitable - si on prends tacitement xalan-j comme norme acceptable sans besoin d'y mentionner chaque fois. Ni xalan dans le faiseau du jdk1.6/1.7 qui est bien connu comme "buggy", ni xalan-j v2.7.1 qui est raisonnablement à jour : les deux comportent différemment dans le détail, mais tous deux ne "marchent" pas comme attendus. Mais il n'y a pas que xalan, loins de là.

Discussions similaires

  1. Afficher valeur dans un tableau
    Par seb221 dans le forum jQuery
    Réponses: 0
    Dernier message: 14/12/2014, 16h06
  2. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  3. [XL-2010] afficher valeur d'un tableau Msgbox
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/12/2013, 22h36
  4. Afficher les valeurs d'un tableau dans la fenêtre d'exécution
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/12/2008, 13h14
  5. Réponses: 3
    Dernier message: 22/04/2007, 00h45

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