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 :

XSLT -> HTML : formatage : indentation et retour a la lig


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut XSLT -> HTML : formatage : indentation et retour a la lig
    Bonjour à tous.

    Mon application propose à l'utilisateur de changer l'apparence de sa page par un système de blocs.

    Je récupère depuis une base de données des portions de code html ( les blocs), cette sortie etant ensuite formatée en XML (voir mes sources a la fin du message)

    Une feuille XSL me permet ensuite de placer et d'ordonner les différents blocs dans le document HTML final suivant les paramètres du fichier XML.

    La transformation se passe bien, je n'ai aucun problème à l'affichage.

    Le problème est au niveau de la source de fichier html produit, en effet :

    - Je récupère toujours un fichier HTML sur une seule ligne, sans retour à la ligne
    -Si au niveau de la base de données, je formate mes blocs HTML (indentation et retour à la ligne), j'obtiens des carré noir dans le fichier source HTML à la place des retours à la ligne. (si je supprime tous les retours à la ligne dans le formatage des blocs de la BDD, je n'ai pas ce problème)

    Ma question est donc la suivante : comment arriver à obtenir un formatage correct du fichier HTML de sortie (indentation et retours chariots) ?

    En gros, je souhaite que le formatage initial soit gardé par la transformation XSL...

    Je ne suis pas expert en XSL, et j'avoue qu'après quelques jours dessus et beaucoup de tests, je ne vois pas la solution ...

    Merci d'avance pour un ptit coup de main !

    Jiib

    Feuille 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
    <?xml version="1.0" encoding="iso-8859-1"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="html" indent="no" encoding="iso-8859-1" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />
          <xsl:strip-space elements="*" />
          <xsl:template match="/">
            <xsl:for-each select="/page/block[@zone= ''head'']">
              <xsl:sort select="@position" />
              <xsl:value-of select="data" disable-output-escaping="yes" />
            </xsl:for-each>
            <xsl:text disable-output-escaping="yes">
              <![CDATA[
                <body> <div id="container"> <div id="topbar"> <h1><$Title$></h1> <h2><$Description$></h2> </div> <div id="content"> <div class="blogbody">
              ]]>
            </xsl:text>
            <xsl:for-each select="/page/block[@zone= ''centercol'']">
              <xsl:sort select="@position" />
              <xsl:value-of select="data" disable-output-escaping="yes" />
            </xsl:for-each>
            <xsl:text disable-output-escaping="yes">
              <![CDATA[
                </div> </div> <div id="rightbar"> <div class="navlinks">
              ]]>
            </xsl:text>
            <xsl:for-each select="/page/block[@zone= ''rightcol'']">
              <xsl:sort select="@position" />
              <xsl:value-of select="data" disable-output-escaping="yes" />
            </xsl:for-each>
            <xsl:text disable-output-escaping="yes">
              <![CDATA[
                </div> </div> <div style="clear: both;">&nbsp;</div></div> </body> </html>
              ]]>
            </xsl:text>
          </xsl:template>
        </xsl:stylesheet>
    Exemple de source XML : (j'ai volontairement enlevé les balises des blocs HTML, je pense que cela n'a pas d'interêt pour l'exemple)

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
        <page>
          <block name="post" position="1" zone="centercol">
            <data>
              <![CDATA[
                ....BLOC HTML ...
              ]]>
            </data>
          </block>
          <block name="post" position="2" zone="centercol">
            <data>
              <![CDATA[
                ....BLOC HTML ...
              ]]>
            </data>
          </block>
          <block name="headhome" position="1" zone="head">
            <data>
              <![CDATA[
                ....BLOC HTML ...
              ]]>
            </data>
          </block>
        </page>

  2. #2
    Membre éprouvé
    Avatar de jérôme
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 591
    Points : 1 071
    Points
    1 071
    Par défaut
    Ben ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:strip-space elements="*" />
    Ca te supprime tous les espaces et les espaces blancs, d'où ton manque de retours à la ligne.
    Ensuite pour tes carrés, il s'agit très certainement d'un problème de retour à la ligne Unix|Windows
    Unix : \n
    Windows : \r\n

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    Merci Jérome pour ton aide,

    J'ai viré <xsl:strip-space, rajouté le formatage initial dans la base (indentation et retour à la ligne), et ça à l'air de fonctionner. Le formatage initial est préservé dans le fichier HTML final.

    En fait, c'est bizarre pour les retours à la ligne, car mon fichier contient toujours des carrés ( a la place des retours) quand je l'ouvre avec Notepad, mais mon application les renvoie comme des retour à la ligne, donc c 'est bon.

    Quand tu me parlais du retour à la ligne Unix|Windows, en fait toute mon appli tourne sous win 2000 server

    Jiib

Discussions similaires

  1. [XSLT]Problème de formatage XSL
    Par lexidus dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 14/09/2006, 10h01
  2. [XSLT][XML=>HTML] Existe - t - il un tutoriel?
    Par Jean_Benoit dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/06/2006, 17h30
  3. XSLT : representation HTML en tableau double entree
    Par samouille666 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/06/2006, 20h18
  4. [HTML] Probleme valeur de retour checkbox
    Par krony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 29/11/2005, 14h59
  5. [XSLT] [XML->HTML] transformation XML -> HTML via XSL
    Par Great Sayaman dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2004, 22h12

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