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 les background-color [XSL-FO]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut afficher les background-color
    Bonjour.
    Je tente de convertir du html en pdf.
    pour ce faire je passe par Jtidy (html to xhtml), Xalan (xhtml to xsl-fo), et FOP (xsl-fo to pdf).
    En théorie, je devrais obtenir le même visuel que le fichier html.
    Hors les background color n'apparaissent pas.
    Une idée?

    voici mon code html de départ
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html><body>é<br />Bonjour<br />
    test<u> mise </u>en <em>forme</em> <br />
    <hr />
    <div style="text-align: center"><strong>TOTO et le</strong><span style="background-color: #ffff00"><strong> reste <br />
    </strong></span><span style="color: #0000ff">du monde</span></div></body></html>

    Je joins également un extrait de mon 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
    <xsl:template name="process-common-attributes">
    	<xsl:if test="@style">
    		<xsl:call-template name="process-style">
    			<xsl:with-param name="style" select="@style"/>
    		</xsl:call-template>
    	</xsl:if>
    </xsl:template>
     
    <xsl:template name="process-style">
    	<xsl:param name="style"/>
    	<xsl:choose>
    		<xsl:when test="$name = 'background-color'">          
    			<xsl:attribute name="background-color">
    				<xsl:value-of select="$value"/>
    			</xsl:attribute>
    		</xsl:when>
    	</xsl:choose>
    </xsl:template>

  2. #2
    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,

    tu nous montre que ton html de départ et pas le xhtml obtenu avec JTidy.
    Or il suffit que n'ait pas configurer JTidy correctement pour que ton xhtml ne soit pas comme tu le souhaite.

    C'est seulement une fois que tu as un code xhtml correcte que tu pourra créer des règles xslt comme il faut

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut
    Merci pour la réponse.
    En fait dans mon code (java) je ne génère pas de fichier intermédaire, Je n'ai donc pas accès au code xhtml généré.
    Avec JTidy, j'effectue un parseDOM de mon fichier html.

    Est-ce qu'il y a une étape à faire avant?

  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,

    autant que je me souvienne, non.

    Après, tu peux toujours écrire une règle xslt qui te permettra de vérifier si ton xhtml contient bien l'attribut background-color, et de vérifier ainsi si tu obtient le xhtml que tu souhaite

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut
    Je crois effectivement que l'attribut est bien transmis...
    J'ai fait quelques essais dans mon xsl lui demandant d'afficher la valeur
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:when test="$name = 'background-color'">          
    		  <!--<xsl:attribute name="color">-->
                <xsl:value-of select="$value"/>
    		  <!--</xsl:attribute>-->
            </xsl:when>
    Le résultat est que la valeur #ffff00 s'affiche.

    si je demande à afficher le background (qui n'existe pas selon W3C)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:when test="$name = 'background-color'">          
    		  <xsl:attribute name="background-color">
                <xsl:value-of select="$value"/>
    		  </xsl:attribute>
            </xsl:when>
    le résultat est rien... je n'ai pas de couleur qui s'affiche.

  6. #6
    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
    Pour bien faire, il faudrait montrer plus de code XSLT,
    car je crois que c'est pour créer un élément ou un attribut que tu as un soucis.

  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
    Je refères le post de 2012-01-03 11h46, essayez ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:when test="$name = 'background-color'">          
        <xsl:attribute name="style">
            <xsl:value-of select="concat('background-color:',$value,';')"/>
        </xsl:attribute>
    </xsl:when>

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut
    Pas mieux

  9. #9
    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
    Bon plusieurs choses :

    il est clair que la doc du W3school : bof bof ! Seule la documentation de fop 0.20 va t'indiquer l'utilisation de background-color.

    lorsque j'affiche le résultat du parseDOM le résultat me semble correcte. Le texte contenu est quasi identique au html de départ.
    mais lorsque j'affiche le xmlDoc là ça ne ressemble pas franchement à ce que j'avais au départ...
    Je vois vraiment pas pourquoi tu va chercher xmlDoc !!!

    C'est brouillon ce que tu nous dis (enfin ce n'est que mon point de vue) . Il faut procéder étape par étape. Une fois que tu as ton xhtml correcte, tu t'occupe de ta transformation xsl, ...

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut
    Je commentais juste les résultats intermédiaires pour voir où est-ce que ca ne respecte plus le fichier de départ...
    Désolé si je suis un peu brouillon mais j'avoue que je ne maitrise pas le sujet (il faut bien une premiere fois... mais c'est jamais térrible) et que j'essaie d'ouvrir plusieurs pistes pour me donner des idées.

    Alors effectivement j'arrive bien à faire la conversion html>xhtml avec jtidy
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tidy tidy = new Tidy();
    tidy.setXHTML(true);
     
    Document xmlDoc = tidy.parseDOM(input,null);
    Donc dans xmlDoc j'ai un xml provenant de mon xhtml (tidy.setXHTML(true) ).
    Ensuite j'appelle une méthode de Xalan pour appliquer le xsl, puis je passe par fop.
    La version 0.20 utilise la classe org.apache.fop.apps.Driver
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Driver driver = new Driver(fopInputSource, out);
    driver.setLogger(log);
    driver.setRenderer(Driver.RENDER_PDF);
    driver.run();

    J'ai vu une chose dans le log (je l'ai mis en place il y a peu )
    J'ai vu les lignes ERROR suivantes

    [ERROR] property 'style' ignored
    [INFO] [1]
    [ERROR] defaulted font to any,normal,normal
    [ERROR] unknown font sans-serif,normal,bolder so defaulted font to any
    [ERROR] defaulted font to any,normal,normal
    [ERROR] unknown font sans-serif,normal,bolder so defaulted font to any
    [ERROR] defaulted font to any,normal,normal
    [ERROR] unknown font sans-serif,normal,bolder so defaulted font to any
    [DEBUG] Last page-sequence produced 1 pages.
    Là il dit bien que la balise style est ignorée... mais pourquoi???

  11. #11
    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
    Là, j'en sais rien !!!

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

Discussions similaires

  1. Peut-on faire un background-color sur la balise area dans les map?
    Par dev14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 24/03/2013, 20h45
  2. afficher masquer background-color
    Par totofe49 dans le forum jQuery
    Réponses: 2
    Dernier message: 25/03/2011, 13h50
  3. afficher les images background
    Par DELYMED2 dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 09h09
  4. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33
  5. Afficher les bonnes facettes
    Par WormsHL-Groove dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/08/2002, 21h36

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