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 :

Affichage des seules valeurs modifiées


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Affichage des seules valeurs modifiées
    Bonjour

    Je dispose d'un fichier xml du type


    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
     
    date          heure           label      etat 
     
    20130902   10:00:00       interrupteur1     OFF
    20130902   10:00:00       interrupteur2     ON
    20130902   10:00:00       interrupteur3     OFF
    20130902   10:00:00       interrupteur4     OFF
    20130902   10:05:00       interrupteur1     OFF
    20130902   10:05:00       interrupteur2     ON
    20130902   10:06:00       interrupteur3     OFF
    20130902   10:06:00       interrupteur4     OFF
    20130902   10:12:00       interrupteur1     OFF
    20130902   10:12:00       interrupteur2     OFF
    20130902   10:12:00       interrupteur3     OFF
    20130902   10:13:00       interrupteur4     ON
    Je souhaite traiter ce fichier à l aide d'un fichier xsl afin de ne faire apparaître
    que les interrupteurs dont les états ont changé ( ainsi que leurs états ).


    dans le cas présent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Date          heure           label              Etat précédent      Etat actuel
    20130902   10:12:00       interrupteur2     ON                          OFF
    20130902   10:13:00       interrupteur4     OFF                         ON

    Par avance merci

  2. #2
    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
    Si cet interrupteur a été mentionné avant, et que la plus proche mention n'indiquait pas le même état, alors écrire ce nouvel état.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    En effet.

    Mon idée est de mémoriser la première valeur des états de chacun des interrupteurs ( dans des variables ) et ensuite de les comparer à la valeur à chaque boucle.

    si la valeur est différente alors
    j écris la date et je modifie la valeur à comparer .


    Cependant comment peut on mémoriser la première valeur ?

  4. #4
    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
    Je pense que ça ne marchera pas. Tu ne cherches pas la première valeur, mais la plus récente valeur précédente.

    De toute façon, pas besoin de mémoriser, il suffit d'aller la chercher à chaque fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    merci

    Et syntaxiquement, comment procède t on pour spécifier que l on souhaite la comparer avec la première valeur ?
    De plus si la valeur a changé il ne faudra pas effectuer le contrôle par rapport à la première valeur mais par rapport à celle qui a été précédemment modifiée.
    D'où ma suggestion d'utiliser une variable que l on initialiserait au préalable à la valeur initiale et que l on modifierait lorsque l on passe dans la boucle if

    Mais comment rappeler comme vous le conseillez ais la plus récente valeur précédente ?

    mon 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
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    <GeneratedReport>
        <Interval Start="2013/09/01 00:00:00" End="2013/04/01 23:59:59">
    <EngTm Mnemonic="Interrupteur1" EngValue="OFF"  Date="2013/04/01 00:01:05.568"/>
    <EngTm Mnemonic="Interrupteur2" EngValue="OFF"  Date="2013/04/01 00:01:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="OFF"  Date="2013/04/01 00:02:05.568"/>
    <EngTm Mnemonic="Interrupteur2" EngValue="OFF"  Date="2013/04/01 00:02:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="ON"   Date="2013/04/01 00:03:05.568"/>
    <EngTm Mnemonic="Interrupteur2" EngValue="OFF"  Date="2013/04/01 00:03:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="ON"   Date="2013/04/01 00:04:05.568"/>
    <EngTm Mnemonic="Interrupteur2" EngValue="OFF"  Date="2013/04/01 00:04:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="OFF"  Date="2013/04/01 00:05:05.568"/>
    <EngTm Mnemonic="Interrupteur2" EngValue="OFF"  Date="2013/04/01 00:06:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="ON"   Date="2013/04/01 00:06:05.568"/>
    <EngTm Mnemonic="Interrupteur1" EngValue="ON"   Date="2013/04/01 00:06:05.568"/>
    </Interval>
    </GeneratedReport>



    Ci dessous un premier jet de mon 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
    <xsl:for-each-group select="//EngTm" group-by="substring(Date,0,17)">
    <xsl:for-each select="current-group()">
    </xsl:for-each>
     
    <xsl:if test="@mnemonic=interrupteur1">
        <xsl:if test="@EngValue != premiere valeur_1">
             <xsl:value-of select="current-group()/@Date"/><xsl:text> </xsl:text>
             <xsl:value-of select="current-group()/@Mnemonic"/><xsl:text> </xsl:text><xsl:value-of select="current-group()/@EngValue"/>
       </xsl:if>
    </xsl:if> 
     
    <xsl:if test="@mnemonique=interrupteur2">
        <xsl:if test="@EngValue != premiere valeur_2">
             <xsl:value-of select="current-group()/@Date"/><xsl:text> </xsl:text>
             <xsl:value-of select="current-group()/@EngValue"/>
       </xsl:if>
    </xsl:if>
     
     
    </xsl:for-each-group>
    Mon problème réside entre autre à fixer le terme premiere valeur_1 &2 ( rappel de la plus récente valeur précédente)

    par avance merci

  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
    Citation Envoyé par raphael75015 Voir le message
    Et syntaxiquement, comment procède t on pour spécifier que l on souhaite la comparer avec la première valeur ?
    Ne garder que le premier d'un ensemble : [1] .
    Comparer avec une sélection : Sélectionner, et appliquer la comparaison là-dessus .

    Exemple : "Si le premier fils <a> de valeur 25 a un id de valeur A" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xls:if test="a[. = 25][1]/@id = 'A'">
    Citation Envoyé par raphael75015 Voir le message
    D'où ma suggestion d'utiliser une variable que l on initialiserait au préalable à la valeur initiale et que l on modifierait lorsque l on passe dans la boucle if
    On ne peut pas modifier une variable.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/05/2011, 16h01
  2. [Vxi3] Infoview : affichage des précédentes valeurs de planification
    Par Frank Holstein dans le forum Deski
    Réponses: 2
    Dernier message: 10/12/2010, 10h34
  3. Réponses: 3
    Dernier message: 05/03/2007, 12h54
  4. liste modifiable - affichage des données
    Par puppusse79 dans le forum Access
    Réponses: 2
    Dernier message: 07/06/2006, 16h31
  5. Comment modifier l'affichage des objets cachés de Windows ?
    Par maximdus dans le forum API, COM et SDKs
    Réponses: 23
    Dernier message: 23/07/2005, 11h45

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