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 :

Retrait de paragraphe en XSL


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Par défaut Retrait de paragraphe en XSL
    Bonjour,
    J'ai un document XML, je veux mettre le texte en forme via une feuille de style XSL.
    C'est dans ce genre-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <paragraphe>
      <style1>bla bla bla bla bla bla</style1>
      <style2> blo blo blo</style2>
      <style3>bli bli bli bli</style3>
    </paragraphe>
    (plusieurs fois avec des textes différents)

    et je veux avoir un retrait à gauche de par exemple 40px pour tous les paragraphes entre les balises "paragraphe" (c'est à dire, même s'il y a plusieurs lignes de texte, je veux que toutes les lignes du paragraphe soient
    à 40px du bord).

    J'ai essayé en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="paragraphe">
     
         <div style="margin-left: 40px;">
                 <xsl:value-of select="."/>
          </div>
     
    </xsl:template>
    mais ça marche pas, ça défait la mise en forme de tout ce qui est dans le paragraphe.
    Quelqu'un peut-il m'aider?

    Merci!!!

  2. #2
    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
    xsl:value-of ne fait que récupérer le texte, en perdant toutes les balises. Il faut utiliser xsl:apply-templates, à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Par défaut
    Ok, merci bcp!

    Et sinon, si j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <style1>bla bla bla bla bla bla</style1>
      <style2> blo blo blo</style2>
      <style3>bli bli bli bli</style3>
    et que je veux aussi qu'à chaque fois que j'ai le groupe style1+style2+style3 à la suite (sans qu'ils soient inclus dans "paragraphe"), ils soient en retrait, ya-t-il une solution en XSL?

    Merci

  4. #4
    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
    Il y en a une mais ça devient chiant.
    En fonction de ton cas très précis on peut peut-être chercher une méthode plus simple, mais dans le cas général ce sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template match="style1[following-sibling::*[1][self::style2] and following-sibling::*[2][self::style3]]">
      <ma-balise-pour-retrait-style1>
        <xsl:apply-templates/>
      </ma-balise-pour-retrait-style1>
    </xsl:template>
     
    <xsl:template match="style2[preceding-sibling::*[1][self::style1] and following-sibling::*[1][self::style3]]">
      <ma-balise-pour-retrait-style2>
        <xsl:apply-templates/>
      </ma-balise-pour-retrait-style2>
    </xsl:template>
     
    <!-- Meme chose pour style3 -->
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Par défaut
    Merci beaucoup.

    Pour le 3e style j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="style3[preceding-sibling::*[1][self::style1] and 
    preceding-sibling::*[1][self::style1]]">
      <ma-balise-pour-retrait-style3>
        <xsl:apply-templates/>
      </ma-balise-pour-retrait-style3>
    </xsl:template>
    tu as mis "même chose" mais c'est pas tout à fait la même chose (c'est évident pour toi mais pas pour les nuls comme moi ). Est-ce que c'est bon où je me suis trompé? (je débute)

    Je dois mettre quoi à la place de "ma-balise-pour-retrait-..." ? J'ai pas trop compris à quoi ça servait ni à quoi ça correspondait.
    J'ai dû louper un épisode, mais à quel endroit on définit combien de pixels mesurera le retrait?

    Merci

  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 pwyll2 Voir le message
    tu as mis "même chose" mais c'est pas tout à fait la même chose (c'est évident pour toi mais pas pour les nuls comme moi ). Est-ce que c'est bon où je me suis trompé? (je débute)
    Il y a une erreur. Selon ton exemple, la balise <style3> ne doit être traitée que si son deuxième preceding-sibling est un <style1> et si son premier preceding-sibling est un <style2>.
    Or toi tu vérifies deux fois le premier preceding-sibling, et tu vérifies à chaque fois que c'est un <style1>. Ce n'est pas ce que tu veux, et de toute façon ça n'a pas d'intérêt de vérifier deux fois la même chose.

    Il est normal que ça ne soit pas "évident." Toutefois, c'est de l'informatique, et ça ne se répète pas comme un perroquet. Évident ou pas, il faut se servir des deux premiers exemples pour comprendre comment faire le 3e. Je vais aider, mais pas faire ton travail.
    Au fait, tu as le droit d'essayer de jouer un peu "ça compte pas" et essayer des trucs, tout en lisant des tutoriels XPath pour essayer de comprendre comment ça marche.

    Je dois mettre quoi à la place de "ma-balise-pour-retrait-..." ? J'ai pas trop compris à quoi ça servait ni à quoi ça correspondait.
    J'ai dû louper un épisode, mais à quel endroit on définit combien de pixels mesurera le retrait?
    Ce sont des questions de HTML, pas de XSLT. Tu mets n'importe quel code qui provoquera un retrait comme celui que tu souhaites.
    Rien ne t'empêche de t'entraîner en faisant un fichier .html tout simple pour voir quel code HTML conviendra.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Retrait/Indentation des paragraphes
    Par Heiddi dans le forum Mise en forme
    Réponses: 2
    Dernier message: 28/08/2011, 08h09
  3. Réponses: 2
    Dernier message: 19/03/2008, 17h38
  4. Paragraphe sans retrait
    Par zafo dans le forum Mise en forme
    Réponses: 7
    Dernier message: 27/02/2007, 15h05
  5. [CSS] Retrait de paragraphe
    Par Phenomenium dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 22/10/2005, 11h09

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