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 :

justifier du texte


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut justifier du texte
    Salut,

    je veux transformer un fichier XML en fichier texte et je fais celà avec une trancsformation XSLT

    Mais le fichier texte que je dois produire doit respecter certaines contraintes.
    Je m'explique. J'ai comme fichier d'entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <noeud1>
            <fils1>toto</fils1>
            <fils2>turlutu</fils2>
    </noeud1>

    et je souhaite obtenir en sortie

    c'est-à-dire que le contenu de chaque noeud fils doit apparaitre sur 10 caractères, puis le suivant sur 10 caractères...

    pour des nombres j'aurais pu utiliser format-number(), mais comme là je travaille avec du texte...

    J'avais également pensé utiliser un call-template et un template qui ajouterait des espaces pour compléter la chaîne à 10 caractères, mais je n'arrive pas non plus à insérer un caractère espace seul (quand j'en positionne un seul (sans carctère derrière) il n'est jamais présent dans mon fichier de sortie.
    Et de même lorsque je concatène une variable contenant espace (&#32 avec un mot quelconque, l'espace est supprimé...

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    pour le processeur XSLT ne normalise pas les espaces, il faut placer le texte formaté dans un <xsl:text>...</xsl:text>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut
    Merci GrandFather pour ce précieux élément (des fois on est bloqué par peu de choses...)


    J'ai donc créé un template qui permet de justifier du texte avec des espaces (à droite)
    Il prend 2 paramètres en entrée : la longueur totale que l'on veut obtenir (LongueurAlphanum) et la longueur du champ à justifier (LongueurChaine)
    Tant que la longueur de la chaine est inférieure à la longueur finale, on écrit un espace et on appelle récursivement le template en incrémentant de 1 la valeur de la chaine à justifier (puisqu'on a ajouté le caractère espace)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:template name="JustifierAlphanum">
    		<xsl:param name="LongueurAlphanum"/>
    		<xsl:param name="LongueurChaine"/>
    		<xsl:if test="$LongueurChaine &lt; $LongueurAlphanum">
    			<xsl:text> </xsl:text>
    			<xsl:call-template name="JustifierAlphanum">
    				<xsl:with-param name="LongueurAlphanum" select="$LongueurAlphanum"/>
    				<xsl:with-param name="LongueurChaine" select="$LongueurChaine + 1"/>
    			</xsl:call-template>
    		</xsl:if>
    	</xsl:template>
    Et j'appelle mon template de la façon suivante (par exemple quand je veux justifier ma variable SkuIdDo (qui fait 9 caractères) sur 12 caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:value-of select="$SkuIdDo"/>
    <xsl:call-template name="JustifierAlphanum">
    			<xsl:with-param name="LongueurAlphanum">12</xsl:with-param>
    			<xsl:with-param name="LongueurChaine" select="string-length($SkuIdDo)"/>
    		</xsl:call-template>

    Ainsi si ma variable SkuIdDo contient 'testtesta', j'obtiendrais en sortie
    testtesta suivi de 3 espaces pour que mon champ fasse bien 12 caractères au final !

    Voilà c'est un peu lourd mais bon ça marche. Mais si quelqu'un a mieux je suis preneur !

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/09/2010, 06h59
  2. Justifier à droite texte dans JLabel
    Par Atomikx dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/04/2007, 19h56
  3. Justifier le texte d'un RichEdit
    Par codial dans le forum Delphi
    Réponses: 4
    Dernier message: 09/02/2007, 18h11
  4. CSS justifier le texte
    Par lea94140 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 12/11/2006, 14h40
  5. [ImageMagick] Justifier le texte avec imagettftext
    Par AurelBUD dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/10/2006, 11h06

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