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 :

Tronquer chaine de caractère via XSL sur plusieurs enregistrements


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Tronquer chaine de caractère via XSL sur plusieurs enregistrements
    Hello tout le monde !

    Alors, j'ai un fichier XML avec plusieurs enregistrements qui ressemble à ça :

    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
     
    <ZBE14_OEMs_ItemUpdate_OUT>
    	<Record>
    		<ItemMaster>
    			<FLAG>ABCDEFGHIJKLMNOPQRST</FLAG>
    			<CONO>700</CONO>
    			<WHLO>20A</WHLO>
    			<STAT>40 / ZS STAT=</STAT>
    			<ITNO>P005603 / ZS ITNO=</ITNO>
    		</ItemMaster>
    	</Record>
    	<Record>
    		<ItemMaster>
    			<FLAG>12345678910111213141516171819</FLAG>
    			<CONO>700</CONO>
    			<WHLO>20A</WHLO>
    			<STAT>20 / ZS STAT=50</STAT>
    			<ITNO>P005937 / ZS ITNO=E25125B30Q16001</ITNO>
    		</ItemMaster>
    	</Record>
    </ZBE14_OEMs_ItemUpdate_OUT>
    Et je souhaiterais, via XSL, formater ce XML pour ne garder que les 10 premiers caractères dans le champs "FLAG".
    Mon bout de code suivant fonctionne mais seule la première occurrence de FLAG ("ABCDEFGHIJ") est tronquée, et elle se trouve reportée sur les autres enregistrements.

    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:stylesheet version="1.0"
    	 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	 <xsl:output omit-xml-declaration="yes" indent="yes"/>
    	 <xsl:strip-space elements="*"/>
     
    	 <xsl:param name="pReplacement" select="substring(ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG, 1, 10)"/>
     
    	 <xsl:template match="node()|@*">
    		<xsl:copy>
    		<xsl:apply-templates select="node()|@*"/>
    		</xsl:copy>
    	 </xsl:template>
     
    	 <xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG/text()">
    	<xsl:value-of select="$pReplacement"/>
    	 </xsl:template>
    </xsl:stylesheet>

    Merci à vous

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Plutôt comme ça.
    Code xsl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:value-of select="substring(normalize-space(), 1, 10)"/>
        </xsl:copy>
    </xsl:template>

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Hello tsuji

    Merci pour ta réponse, mais je n'ai pas l'impression que cela fonctionne de mon côté. Aurais-tu une autre idée ?

    Merci !

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je viens de tester et il devrait marcher... Faisant le test encore et vérifiant tous les typos etc...

  5. #5
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Pourrais-tu m'expliquer le fonctionnement de ton bout de code s'il te plaît ? Je débute dans le xml/xsl et j'ai un peu du mal encore.

    J'ai conservé mes en têtes en fait, je fais bien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>
     
    <xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:value-of select="substring(normalize-space(), 1, 10)"/>
        </xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Préservez le template de transformation d'Identité.
    Code xslt : 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
    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>
     
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
     
    <xsl:template match="ZBE14_OEMs_ItemUpdate_OUT/Record/ItemMaster/FLAG">
        <xsl:copy>
            <xsl:apply-templates select="@*" />
            <xsl:value-of select="substring(normalize-space(), 1, 10)"/>
        </xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>

  7. #7
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Je t'aime tsuji, merci

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

Discussions similaires

  1. Remplacer caractère dans chaine de caractères via lexique
    Par nico2rib dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2012, 15h01
  2. Récupérer une chaine de caractère via un argument
    Par joker92 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/01/2011, 03h05
  3. Récupération chaine de caractére (via regex)
    Par Micke7 dans le forum Général Java
    Réponses: 3
    Dernier message: 09/01/2009, 10h10
  4. Réponses: 4
    Dernier message: 20/05/2008, 13h46
  5. Réponses: 3
    Dernier message: 26/05/2006, 19h49

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