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] XML -> TXT : Complétion par des blancs ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XSLT] XML -> TXT : Complétion par des blancs ?
    Bonjour,

    Problème assez simple.

    Soit un exemple de fichier XML suivant en entrée du XSLT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <NOM>martin</NOM>
    <NOM>dupont</NOM>
    <NOM>durand</NOM>
    Sortie souhaitée sous forme de fichier texte taille fixe (exemple : 100 caractères) :

    martindupontdurant

    => A compléter par des blancs jusqu'à obtenir une ligne de 100 caractères.

    Comment puis-je faire ceci en XSLT sachant que les compteurs de caractères dans une boucle for-each se réinitialisent à chaque boucle ?

    Merci de votre aide.

    Francalex.

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'info.

    J'ai essayé, mais je n'arrive pas à sortir de ma boucle récursive correctement.
    Lorsque je conditionne la sortie sur la comparaison entre position() et last(), la sortie est immédiate alors qu'il reste des balises à traiter.

    En effet, position() et last() sont valorisés à 1 dès la lecture de la première balise alors qu'il y a 3 balises dans mon fichier xml d'entrée.

    Je vous reprécise le fichier XML en entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <CHAMPS>
       <NOM1>Martin</NOM1>
       <NOM2>Dupont</NOM2>
       <NOM3>Durand</NOM3>
    </CHAMPS>

    Voici le bout de mon code 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
    <xsl:template name="compteur">
            <xsl:param name="tailletotale"/>
            <out><xsl:value-of select="*"/></out>
            <xsl:if test="position() != last()">
            <xsl:call-template name="compteur">
    	<xsl:with-param name="tailletotale" select="$tailletotale + string-length(.)"/>
    	</xsl:call-template>
            </xsl:if>
    </xsl:template>
     
    <xsl:apply-templates select="CHAMPS"/>
        <out><xsl:value-of select='substring("                                                                                        ",100-$tailletotale)'/></out>
     
    <xsl:template match="CHAMPS">
           <xsl:call-template name="compteur">
            <xsl:with-param name="tailletotale" select="0"/>
      </xsl:call-template>

    Le rendu souhaité est :

    MartinDupontDurand complété par des blancs pour atteindre 100 caractères au total

    Merci de votre aide.

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    le compteur récursif n'est là que pour les blancs à rajouter.

    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="ton_chemin/CHAMPS"/>
    effectuera la concaténation

Discussions similaires

  1. script pour remplacer des caractères par des blancs
    Par floctc dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2009, 16h44
  2. Réponses: 5
    Dernier message: 11/01/2007, 09h35
  3. Réponses: 3
    Dernier message: 12/09/2006, 12h53
  4. Réponses: 4
    Dernier message: 25/07/2006, 17h37
  5. Remplissage d'un string par des blancs
    Par hunter001 dans le forum SL & STL
    Réponses: 12
    Dernier message: 13/05/2005, 19h56

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