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->html : retour chariot, espaces dans un div


Sujet :

XML/XSL et SOAP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut [resolu]xml->html : retour chariot, espaces dans un div
    je bute sur le retour chariot et les espaces dans un div. Et de maniere generale, sur ce code :

    Fichier xml : (c'est du code C documente en 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
     
    <root>
    <para>Ceci est un exemple de listing de program:</para>
    <para>Example: <programlisting>
    <codeline>
    <highlight class="preprocessor">
    <sp/>#include<sp/>&lt;stdio.h&gt;</highlight>
    <highlight class="normal"/>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    </highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    </highlight>
    <highlight class="keywordtype">int</highlight>
    <highlight class="normal"/>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>main(</highlight>
    <highlight class="keywordtype">int</highlight>
    <highlight class="normal">
    <sp/>argc,<sp/>
    </highlight>
    <highlight class="keywordtype">char</highlight>
    <highlight class="normal">
    <sp/>**argv)</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>{</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    <sp/>
    <sp/>int<sp/>*ef;</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    <sp/>
    <sp/>
    </highlight>
    <highlight class="keywordtype">char</highlight>
    <highlight class="normal">
    <sp/>buf[1024],<sp/>*ret,<sp/>**list;</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    <sp/>
    <sp/>
    </highlight>
    <highlight class="keywordtype">int</highlight>
    <highlight class="normal">
    <sp/>size,<sp/>num,<sp/>i;</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    </highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    </highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>
    <sp/>
    <sp/>
    </highlight>
    <highlight class="keywordflow">return</highlight>
    <highlight class="normal">
    <sp/>0;</highlight>
    </codeline>
    <codeline>
    <highlight class="normal">
    <sp/>}</highlight>
    </codeline>
    </programlisting>
    </para>
    </root>
    Fichier 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
    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
    <?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" indent="yes" version="1.0"/>
     
    <xsl:template match="root">
     
        <xsl:apply-templates/>
     
    </xsl:template>
     
     
    <xsl:template match="programlisting">
      <xsl:text>Mon PROG !!</xsl:text>
          <xsl:element name="div">
            <xsl:attribute name="class">
              <xsl:text>programlisting</xsl:text>
            </xsl:attribute>
          <xsl:apply-templates/>
          </xsl:element>
    </xsl:template>
     
    <xsl:template match="para">
      <xsl:choose>
        <xsl:when test="not(./programlisting)">
          <xsl:element name="p">
            <xsl:apply-templates/>
          </xsl:element>
        </xsl:when>
        <xsl:otherwise>
            <xsl:apply-templates/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
     
    <xsl:template match="codeline">
      <xsl:apply-templates/>
      <xsl:element name="br"/>
    </xsl:template>
     
    <xsl:template match="sp">
      <xsl:text>&#x20;</xsl:text>
    </xsl:template>
     
    <xsl:template match="highlight">
      <xsl:element name="span">
        <xsl:attribute name="class">
          <xsl:value-of select="./@class"/>
        </xsl:attribute>
        <xsl:apply-templates/>
      </xsl:element>
    </xsl:template>
     
    </xsl:stylesheet>
    quand j'envoie ca dans xt, je n'ai pas les retour a la ligne, le code C est sur une ligne. Normal, je n'en mets pas. Mais, j'ai essaye plein de trucs sans succes.

    Mais surtout, xt me fournit un html avec trop de retour a la ligne (faut mettre un element pre autour du code, pour bien s'en rendre compte)

    si quelqu'un pouvait me dire:
    1) comment mettre ces retours a la ligne (a la fin d'un "ligne de code C")
    2) eviter tous ces retour chariot qui appraissent dans le code html et qui sont visibles des qu'on met un pre comme element (par exemple).

    merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    pour mettre un retour à la ligne en html il suffit de rajouter un "<br/>"

    je vois que tu utilise un "xsl:for-each" pour les éléments "codeline" alors que tu pourrais mettre un "template". il faut que tu évite au maximum les "for-each" parce qu'ils consomment énormement de ressources

    montre nous le résultat de la transformation, on pourra peut-etre t'aider à oter les retours à la ligne du texte

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    ca commence a rentrer, et surtout comment fonctionne apply-templates. J'ai vire le for-each (je vais essayer de les virer tous dans mon vrai xsl) et mis les br pour les sauts de lignes. Ca commence a rendre un peu, mais ce n'est moralement pas satisfaisant.

    J'ai modifie le xsl ci-dessus. Le xml reste inchange. voici l'html que xt me sort :

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <p>Ceci est un exemple de listing de program:</p>
    Example: Mon PROG !!<div class="programlisting">
     
    <span class="preprocessor">
     #include &lt;stdio.h&gt;</span>
    <span class="normal"></span>
    <br>
     
    <span class="normal">
     
    </span>
    <br>
     
    <span class="normal">
     
    </span>
    <span class="keywordtype">int</span>
    <span class="normal"></span>
    <br>
     
    <span class="normal">
     main(</span>
    <span class="keywordtype">int</span>
    <span class="normal">
     argc, 
    </span>
    <span class="keywordtype">char</span>
    <span class="normal">
     **argv)</span>
    <br>
     
    <span class="normal">
     {</span>
    <br>
     
    <span class="normal">
     
     
     int *ef;</span>
    <br>
     
    <span class="normal">
     
     
     
    </span>
    <span class="keywordtype">char</span>
    <span class="normal">
     buf[1024], *ret, **list;</span>
    <br>
     
    <span class="normal">
     
     
     
    </span>
    <span class="keywordtype">int</span>
    <span class="normal">
     size, num, i;</span>
    <br>
     
    <span class="normal">
     
    </span>
    <br>
     
    <span class="normal">
     
    </span>
    <br>
     
    <span class="normal">
     
     
     
    </span>
    <span class="keywordflow">return</span>
    <span class="normal">
     0;</span>
    <br>
     
    <span class="normal">
     }</span>
    <br>
    </div>
    peut-etre que l'emploi des span n'est pas judicieux. Mais il me semblait avoir lu que c'est ce qu'il fallait pour donner des attributs a une partie de ligne.

    Ce que je veux que le fichier xls fasse, c'est une ligne pour chaque tag codeline, et qu'il aille a la ligne apres. Je ne comprends pas d'ou viennent ces retours de lignes qui apparaisent.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    essaye avec "indent=no" pour "xsl:output"

    par contre je ne comprend pas pourquoi tu veux ca puisque tu fait un affichage html et pas texte
    à moins que tu as un xsl pour la sortie html et un autre pour le texte ...

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    le tag codeline correspond a une ligne de code (!)
    dans ce tag, il y a des espaces (les balises <sp/>) et des mots, ayant un id.
    ce que je veux, pour chaque codeline, que les espaces et les mots soient mis dans le html tout betement, et formates un peu comme ce que donnent les balises code du forum. Par exemple, j'aimerais que les 3 premieres lignes de code qu'il y a dans le xml ci-dessus, soient affiches dans le navigateur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     #include <stdio.h>
     
     int
    si je me trompe de tag, que je ne dois pas utiliser le div, ou que je dois lui donner des parametres particulier dans mon css, ou si tu as d'autes idee pour acomplir ce que je veux, n'hesite pas, je changerai volontiers mon xsl pour arriver a ce que je veux.

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    Citation Envoyé par d'Oursse
    Par exemple, j'aimerais que les 3 premieres lignes de code qu'il y a dans le xml ci-dessus, soient affiches dans le navigateur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     #include <stdio.h>
     
     int
    je comprends pas, tu as déjà ce résultat, non ?

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    non : les espaces ne sont pas presents (il y a un espace avant le "int")
    En particulier, c'est visible sur des boucles. Il n'y en a pas dans le code xml que j'ai poste, mais j'en ai.
    Ce que je veux c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=1;i<2;i++)
      printf("%d\n",i);
    et il me fournit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=1;i<2;i++)
    printf("%d\n",i);
    ce sont les balises <sp/> qui doivent me fournir les espaces avant le printf.

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    ah ok !
    essaye en mettant un "non-breaking space" : &#xA0; à la place de &#x20;

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    haaaa, je vais essayer ce soir en rentrant

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    excellent !! ca marche nickel !!
    j'ai passe deux jour a chercher , je commencais a perdre espoir
    Merci beaucoup !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] Retour à la ligne dans un attribut title
    Par totoen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 29/11/2012, 12h05
  2. [xsl] XML-> PDF: Problème retour chariot
    Par JohnnyWalk dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 28/06/2008, 14h35
  3. Réponses: 10
    Dernier message: 09/10/2007, 16h07
  4. Réponses: 3
    Dernier message: 23/08/2006, 16h30
  5. [XSLT][->HTML] Retour chariot
    Par manu.c dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/06/2006, 18h35

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