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 :

concaténer le resultat de valeur


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

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

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut concaténer le resultat de valeur
    Bonjour

    voici mon xml d'origine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    -<REF date_parution="24082013"><PAGE FOLIO="1" CAHIER="1" EDITION="ECL" NOM="ECLJ101" LAY="S"/><PAGE FOLIO="2" CAHIER="1" EDITION="ECL" NOM="ECLJ102" LAY="S"/><PAGE FOLIO="3" CAHIER="1" EDITION="ECL" NOM="ECLJ103" LAY="S"/><PAGE FOLIO="4" CAHIER="1" EDITION="ECL" NOM="ECLJ104" LAY="S"/><PAGE FOLIO="5" CAHIER="1" EDITION="ECL" NOM="ECLJ105" LAY="S"/><PAGE FOLIO="6" CAHIER="1" EDITION="ECL" NOM="ECLJ106" LAY="S"/><PAGE FOLIO="7" CAHIER="1" EDITION="ECL" NOM="ECLJ107" LAY="S"/><PAGE FOLIO="8" CAHIER="1" EDITION="ECL" NOM="ECLJ108" LAY="S"/><PAGE FOLIO="9" CAHIER="1" EDITION="ECL" NOM="ECLJ109" LAY="S"/><PAGE FOLIO="10" CAHIER="1" EDITION="ECL" NOM="ECLJ110" LAY="S"/><PAGE FOLIO="11" CAHIER="1" EDITION="ECL" NOM="ECLJ111" LAY="S"/><PAGE FOLIO="12" CAHIER="1" EDITION="ECL" NOM="ECLJ112" LAY="S"/><PAGE FOLIO="13" CAHIER="1" EDITION="ECL" NOM="ECLJ113" LAY="S"/><PAGE FOLIO="14" CAHIER="1" EDITION="ECL" NOM="ECLJ114" LAY="S"/><PAGE FOLIO="15" CAHIER="1" EDITION="ECL" NOM="ECLJ115" LAY="S"/><PAGE FOLIO="16" CAHIER="1" EDITION="ECL" NOM="ECLJ116" LAY="S"/><PAGE FOLIO="17" CAHIER="1" EDITION="ECL" NOM="ECLJ117" LAY="S"/><PAGE FOLIO="18" CAHIER="1" EDITION="ECL" NOM="ECLJ118" LAY="S"/><PAGE FOLIO="1" CAHIER="2" EDITION="ECL" NOM="ECLC101" LAY="S"/><PAGE FOLIO="2" CAHIER="2" EDITION="ECL" NOM="ECLC102" LAY="S"/><PAGE FOLIO="3" CAHIER="2" EDITION="ECL" NOM="ECLC103" LAY="S"/><PAGE FOLIO="4" CAHIER="2" EDITION="ECL" NOM="ECLC104" LAY="S"/><PAGE FOLIO="5" CAHIER="2" EDITION="ECL" NOM="ECLC105" LAY="S"/><PAGE FOLIO="6" CAHIER="2" EDITION="ECL" NOM="ECLC106" LAY="S"/><PAGE FOLIO="7" CAHIER="2" EDITION="ECL" NOM="ECLC107" LAY="S"/><PAGE FOLIO="8" CAHIER="2" EDITION="ECL" NOM="ECLC108" LAY="S"/><PAGE FOLIO="19" CAHIER="1" EDITION="ECL" NOM="ECLJ119" LAY="S"/><PAGE FOLIO="20" CAHIER="1" EDITION="ECL" NOM="ECLJ120" LAY="S"/><PAGE FOLIO="21" CAHIER="1" EDITION="ECL" NOM="ECLJ121" LAY="S"/><PAGE FOLIO="22" CAHIER="1" EDITION="ECL" NOM="ECLJ122" LAY="S"/><PAGE FOLIO="23" CAHIER="1" EDITION="ECL" NOM="ECLJ123" LAY="S"/><PAGE FOLIO="24" CAHIER="1" EDITION="ECL" NOM="ECLJ124" LAY="S"/><PAGE FOLIO="25" CAHIER="1" EDITION="ECL" NOM="ECLJ125" LAY="S"/><PAGE FOLIO="26" CAHIER="1" EDITION="ECL" NOM="ECLJ126" LAY="S"/><PAGE FOLIO="27" CAHIER="1" EDITION="ECL" NOM="ECLJ127" LAY="S"/><PAGE FOLIO="28" CAHIER="1" EDITION="ECL" NOM="ECLJ128" LAY="S"/><PAGE FOLIO="29" CAHIER="1" EDITION="ECL" NOM="ECLJ129" LAY="S"/><PAGE FOLIO="30" CAHIER="1" EDITION="ECL" NOM="ECLJ130" LAY="S"/><PAGE FOLIO="31" CAHIER="1" EDITION="ECL" NOM="ECLJ131" LAY="S"/><PAGE FOLIO="32" CAHIER="1" EDITION="ECL" NOM="ECLJ132" LAY="S"/><PAGE FOLIO="33" CAHIER="1" EDITION="ECL" NOM="ECLJ133" LAY="S"/><PAGE FOLIO="34" CAHIER="1" EDITION="ECL" NOM="ECLJ134" LAY="S"/><PAGE FOLIO="35" CAHIER="1" EDITION="ECL" NOM="ECLJ135" LAY="S"/><PAGE FOLIO="36" CAHIER="1" EDITION="ECL" NOM="ECLJ136" LAY="S"/><PAGE FOLIO="1" CAHIER="1" EDITION="REP" NOM="REPJ101" LAY="S"/><PAGE FOLIO="2" CAHIER="1" EDITION="REP" NOM="REPJ102" LAY="S"/><PAGE FOLIO="27" CAHIER="1" EDITION="REP" NOM="REPJ127" LAY="S"/><PAGE FOLIO="36" CAHIER="1" EDITION="REP" NOM="REPJ136" LAY="S"/></REF>
    ma feuille 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xchngr="image-etc.com/Exchanger" version="1.0">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
    	<xsl:template match="/">
    		<!--	<xsl:for-each select="//pages/page[substring(@PageID,1,4)='PECL']">
    			<xsl:variable name="pos" select="position()"></xsl:variable>
    				</xsl:for-each>
    	<xsl:element name="TOTO">
    	<xsl:value-of select="$pos"/>
    	</xsl:element>-->
     
    		<xsl:element name="REF">
    			<xsl:attribute name="date_parution"><xsl:value-of select="/REF/@date_parution"/></xsl:attribute>
     
    		<xsl:attribute name="ECL"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='1'] and @EDITION[.='ECL']])"/></xsl:attribute>
    		<xsl:attribute name="REP"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='1'] and @EDITION[.='REP']])"/></xsl:attribute>
    	<xsl:attribute name="CAHIER1"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='2'] and @EDITION[.='ECL']])"/></xsl:attribute>
    	<xsl:attribute name="CAHIER2"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='3'] and @EDITION[.='ECL']])"/></xsl:attribute>
    	<xsl:attribute name="CAHIER3"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='4'] and @EDITION[.='ECL']])"/></xsl:attribute>
    <xsl:attribute name="CAHIER_REP1"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='2'] and @EDITION[.='REP']])"/></xsl:attribute>
    	<xsl:attribute name="CAHIER_REP2"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='3'] and @EDITION[.='REP']])"/></xsl:attribute>
    	<xsl:attribute name="CAHIER_REP3"><xsl:value-of select="count(/REF/PAGE[@CAHIER[.='4'] and @EDITION[.='REP']])"/></xsl:attribute>
     
    <xsl:for-each select="/REF/PAGE[@CAHIER[.='1'] and @EDITION[.='REP']]">
     
    <xsl:value-of select="concat(substring(@NOM,6,2),';')"/>		
     
    </xsl:for-each>
     
     
    	</xsl:element>
    	</xsl:template>
     
    </xsl:stylesheet>
    mon resultat souhaite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <REF CAHIER_REP3="0" CAHIER_REP2="0" CAHIER_REP1="0" CAHIER3="0" CAHIER2="0" CAHIER1="8" REP="4" ECL="36" date_parution="24082013" pages="01;02;27;36"></REF>
    comment arriver à isoler l'attribut pages ? sans le dernier ";"
    merci

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    En faisant un test sur la position dans le for-each ça devrait marcher : <xsl:if test="position() != last()"><xsl:text>;</xsl:text></xsl:if>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    oui ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:for-each select="/REF/PAGE[@CAHIER[.='1'] and @EDITION[.='REP']]">
    	<xsl:choose >
    		<xsl:when test="position() != last()">
    			<xsl:value-of select="concat(substring(@NOM,6,2),';')"/>
    		</xsl:when>
    		<xsl:otherwise >
    			<xsl:value-of select="substring(@NOM,6,2)"/>		
    		</xsl:otherwise>
    	</xsl:choose>
    </xsl:for-each>
    mais je n'arrive pas à le mettre en tant qu'attribut

    voila le resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <REF CAHIER_REP3="0" CAHIER_REP2="0" CAHIER_REP1="0" CAHIER3="0" CAHIER2="0" CAHIER1="0" REP="3" ECL="40" date_parution="26082013">01;02;40</REF>
    moi j'aimerais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <REF CAHIER_REP3="0" CAHIER_REP2="0" CAHIER_REP1="0" CAHIER3="0" CAHIER2="0" CAHIER1="0" REP="3" ECL="40" date_parution="26082013" pages="01;02;40"></REF>

  4. #4
    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
    Englobant xsl:for-each par xsl:attribute nommé pages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:attribute name="pages">
        <!-- xsl:for-each etc... ici -->
    </xsl:attribute>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    pardon , effectivement j'avais fait le plus dur

    juste une dernière question aurions nous pu le faire via une variable qui s'incrémentez dans la boucle

    var = var + <xsl:value-of select="concat(substring(@NOM,6,2),';')"/>

  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
    - On ne peut pas changer la valeur d'une variable en XSLT. Donc non.
    - Ceci n'a rien à voir avec incrémenter. Je ne sais pas trop comment le formuler. Une variable qui "grossit" avec chaque boucle ? Qui à chaque boucle se fait ajouter du contenu en plus ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    oui c'est ça

Discussions similaires

  1. concaténer en asp des valeurs postées
    Par totofe49 dans le forum ASP
    Réponses: 12
    Dernier message: 22/07/2011, 18h58
  2. Réponses: 2
    Dernier message: 18/12/2009, 14h42
  3. [MySQL] Additonner le resultat de valeur multiplier entre elle resultant d'une requete mysql
    Par cseb73 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/03/2008, 15h02
  4. comment concaténer le resultat d'une requete?
    Par achrafyaw dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/01/2008, 10h12
  5. limitation a un resultat par valeur d un champ
    Par venomelektro dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/05/2006, 18h32

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