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] Regroupement de plusieurs éléments semblables successifs [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [XSLT] Regroupement de plusieurs éléments semblables successifs
    Bonjour

    Je debute en XML et je n'arrive pas faire ce que veux. j'ai pas encore tout compris toute la puissance XML, et je ressonne trop comme en langage C.

    XML d'entrées :

    J'ai un fichier DATA.XML
    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
    <DATA>
         <ID>01</ID>
         <BYTE>1E</BYTE>
         <BYTE>FF</BYTE>
    </DATA>
    <DATA>
         <ID>0C</ID>
         <D0>AF</BYTE>
         <D1>2F</BYTE>
    </DATA>
     
    <DATA>
         <ID>0C</ID>
         <D0>0B</BYTE>
         <D1>45</BYTE>
    </DATA>
     
    <DATA>
         <ID>0C</ID>
         <D0>0A</BYTE>
         <D1>3C</BYTE>
    </DATA>
     
    <DATA>
         <ID>04</ID>
         <D0>0A</BYTE>
         <D1>3C</BYTE>
    </DATA>
    ET un fichier DATAINFO.XML
    <DATAINFO>


    Je souhaite un Fichier OUT.XML

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Et tu veux obtenir quoi exactement dans ton fichier OUT.XML ?

    (PS : Corrige ton XML pour plus de lisibilité, de nombreuses balises sont mal fermées à cause du copier coller, merci )
    See you, space cowboy... and if you're satisfied, click on

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut un mars et ca repare
    Desolé, j'ai merder avec la touche TAB + ENTRER, ca à validé alors que j'avais pas fini.

    Je recommence .......

    Fichiers XML en entrées :
    CANFRAME.xml
    DATAINFO.xml
    1/ => CANFRAME.XML: Definie dans un arbre xml de trame CAN recu dans l'ordre chronologique.
    D0 = valeur identifant qui correspond a une donnée precise dans DATADEF.xml
    D1 à D7 = contienne la valeur de la donnée.

    2/ => DATAINFO.XML: definie le type de chaque donée a recu (taille en octet , la dimension de la donnée (matrice 3 dimension maximum) )


    NB: 7 octet [D1 à D7] peuvent contenir la valeur de la donnée identifé par D0
    Donc une donnée dont sa taille total (SIZE * DimensioMatrice) depasse 7 octet sera contenu dans plusieurs trame CAN successive.

    Donc le but est d'avoir en sortie un fichier DATAFRAME.XML qui extrait la donnée , la converti en decimal, et si prend plusieur trame CAN , il faut la reconcatener sous forme de vecteur de donnée comme l'exemple qui suit.

    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
    <ROOT>
    <DATAFRAME>
    		<ID>01</ID>
    		<DATAVALDEC>67850</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>03</ID>
    		<DATAVALDEC>2852194571</DATAVALDEC>
    		<DATAVALDEC>215862459</DATAVALDEC>
    		<DATAVALDEC>255</DATAVALDEC>
    		<DATAVALDEC>21929</DATAVALDEC>
    		<DATAVALDEC>6751078</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>02</ID>
    		<DATAVALDEC>67854</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>03</ID>
    		<DATAVALDEC>2852194571</DATAVALDEC>
    		<DATAVALDEC>215862459</DATAVALDEC>
    		<DATAVALDEC>255</DATAVALDEC>
    		<DATAVALDEC>21929</DATAVALDEC>
    		<DATAVALDEC>6751078</DATAVALDEC>
    </DATAFRAME>
    </ROOT>
    J'aimerai arriver a faire ca en XML si c'est possible. je connais pas la limite de ce langage. Ca ma l'aire compliquer a faire, si qlq'un peut m'aider sa serait chouette. parce que la je galere bcp . surtout pour recherche N element consecutif.

    Merci a ceux qui pouront m'aider.

    Jujux

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Concatenation de plusieurs elements semblable successif
    Bonjour,
    Escusez moi, je remets mon message car je suis pas sur qu'il soit visible de tout le monde.

    Je debute en XML et je n'arrive pas faire ce que veux. j'ai pas encore tout compris toute la puissance XML, et je ressonne trop comme en langage C.

    Fichiers XML en entrées :
    CANFRAME.xml

    DATAINFO.xml

    1/ => CANFRAME.XML: Definie dans un arbre xml de trame CAN recu dans l'ordre chronologique.
    D0 = valeur identifant qui correspond a une donnée precise dans DATADEF.xml
    D1 à D7 = contienne la valeur de la donnée.

    2/ => DATAINFO.XML: definie le type de chaque donée a recu (taille en octet , la dimension de la donnée (matrice 3 dimension maximum) )


    NB: 7 octet [D1 à D7] peuvent contenir la valeur de la donnée identifé par D0
    Donc une donnée dont sa taille total (SIZE * DimensioMatrice) depasse 7 octet sera contenu dans plusieurs trame CAN successive.

    Donc le but est d'avoir en sortie un fichier DATAFRAME.XML qui extrait la donnée , la converti en decimal, et si prend plusieur trame CAN , il faut la reconcatener sous forme de vecteur de donnée comme l'exemple qui suit.


    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
     
    <ROOT>
    <DATAFRAME>
    		<ID>01</ID>
    		<DATAVALDEC>67850</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>03</ID>
    		<DATAVALDEC>2852194571</DATAVALDEC>
    		<DATAVALDEC>215862459</DATAVALDEC>
    		<DATAVALDEC>255</DATAVALDEC>
    		<DATAVALDEC>21929</DATAVALDEC>
    		<DATAVALDEC>6751078</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>02</ID>
    		<DATAVALDEC>67854</DATAVALDEC>
    </DATAFRAME>
     
    <DATAFRAME>
    		<ID>03</ID>
    		<DATAVALDEC>2852194571</DATAVALDEC>
    		<DATAVALDEC>215862459</DATAVALDEC>
    		<DATAVALDEC>255</DATAVALDEC>
    		<DATAVALDEC>21929</DATAVALDEC>
    		<DATAVALDEC>6751078</DATAVALDEC>
    </DATAFRAME>
    </ROOT>
    J'aimerai arriver a faire ca en XML si c'est possible. je connais pas la limite de ce langage. Ca ma l'aire compliquer a faire, si qlq'un peut m'aider sa serait chouette. parce que la je galere bcp . surtout pour recherche N element consecutif.

    Merci a ceux qui pouront m'aider.

    Jujux

  5. #5
    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
    XMl n'est pas un langage mais un META langage, pour ce que tu fait considère que c'est uniquement du fichier de donnée.
    Si tu veux regrouper les données tu peux le faire soit via DOM (uenAPI que tu peux utiliser via le C), soit via XSLT un autre langage mais qui peut être aussi appelé via le C.
    pour plus de detail va déjà jeter un coup d'oeil ici:
    http://xml.developpez.com/faq/

    Choisi déjà ton optique, et reviens voir quand tu aura fait le tri et quelques idées.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    en fait j'ai essayé avec XSLT mais j'y arrive pas. j'a arrive seulement a faire ca. je suis loin de que je veux au final. j'arrive pas convertir en decimal, a concatener en focntion de la taille et de la dimension et à avoir au final un ficher XML bien former avec balise ouvrante er fermante....je suis coincé....

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<xsl:output method="xml" indent="yes"/>
    	<xsl:template match="/">
    		<TPMSTraceEvent>
    			<xsl:for-each select="FILECANFRAME/CANFRAME[./ID = '7B9']">
    					<xsl:variable name="varOldD0" select="preceding-sibling::*/D0"/>
    					<xsl:variable name="varTimer" select="./TIMER"/>
    					<xsl:variable name="varD0" select="./D0"/>
    					<xsl:variable name="varD1" select="./D1"/>
    					<xsl:variable name="varD2" select="./D2"/>
    					<xsl:variable name="varD3" select="./D3"/>
    					<xsl:variable name="varD4" select="./D4"/>
    					<xsl:variable name="varD5" select="./D5"/>
    					<xsl:variable name="varD6" select="./D6"/>
    					<xsl:variable name="varD7" select="./D7"/>		
     
    					<xsl:for-each select="document('./DATAINFO.xml')/DATAINFO_DEF/DATA[./DATAIDTRACE = $varD0]">
    							<xsl:variable name="varDataSize" select="./DATASIZE"/>
    							<xsl:variable name="varDataDimX" select="./DATADIMX"/>
    							<xsl:variable name="varDataDimY" select="./DATADIMY"/>
    							<xsl:variable name="varDataDimZ" select="./DATADIMZ"/>							
    							<xsl:variable name="varTotalSize" select="$varDataSize * $varDataDimX * $varDataDimY * $varDataDimZ"/>
     
    							<xsl:choose>
    								<xsl:when test="not($varD0=$varOldD0)">
    <xsl:text> 
    </xsl:text>
    <xsl:text> 
    </xsl:text>
    									<DATAID><xsl:value-of select="$varD0"/></DATAID>
    									<DATAVAL><xsl:value-of select="$varD1"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD2"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD3"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD4"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD5"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD6"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD7"/></DATAVAL>
    								</xsl:when>
    								<xsl:otherwise>
    									<DATAVAL><xsl:value-of select="$varD1"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD2"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD3"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD4"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD5"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD6"/></DATAVAL>
    									<DATAVAL><xsl:value-of select="$varD7"/></DATAVAL>
    								</xsl:otherwise>
    							</xsl:choose>
    					</xsl:for-each>
    			</xsl:for-each>
    		</TPMSTraceEvent>
    	</xsl:template>
    </xsl:stylesheet>
    Un grand coup de pousse serait super cool. merci les XMLiens

    jujux

Discussions similaires

  1. [XSLT] Regrouper des éléments
    Par titiofparis dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/09/2010, 18h18
  2. [XSLT] afficher plusieurs éléments (boucles)
    Par Isotrope2 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/04/2010, 20h02
  3. Réponses: 2
    Dernier message: 17/03/2009, 15h01
  4. [XSLT] Regroupement d'éléments sur critère
    Par La Truffe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/03/2009, 12h33
  5. [XSLT] Regroupement sur base d'éléments de même valeur
    Par clang35 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/12/2008, 14h43

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