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] condition pour faire un affichage à ma sauce


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
    Novembre 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 68
    Par défaut [XSLT] condition pour faire un affichage à ma sauce
    Bonjour à tous,

    Je suis novice en xml et xslt et je voudrais modifier un fichier xslt déjà crée pour faire un affichage à ma sauce.
    Voici le début du fichier 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="styles/sequ@html@opera-temp.xsl"?>
    <MA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.malighting.de/grandma2/xml/MA" xsi:schemaLocation="http://schemas.malighting.de/grandma2/xml/MA http://schemas.malighting.de/grandma2/xml/2.5.70/MA.xsd" major_vers="2" minor_vers="5" stream_vers="70">
    	<Info datetime="2012-03-26T10:01:09" showfile="qqc carmen" />
    	<Sequ index="1" name="Carmen">
    		<Cue xsi:nil="true" />
    		<Cue index="1" loop_count="3">
    			<InfoItems>
    				<Info>Miz</Info>
    			</InfoItems>
    			<Number number="1" sub_number="0" />
    			<LoopDestination number="2" sub_number="0" />
    			<CueDatas>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="1" channel_id="1" attribute_name="DIM" />
    					<Value>0.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="2" channel_id="2" attribute_name="DIM" />
    					<Value>30.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="3" channel_id="3" attribute_name="DIM" />
    					<Value>0.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="4" channel_id="4" attribute_name="DIM" />
    					<Value>55.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="5" channel_id="5" attribute_name="DIM" />
    					<Value>0.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="6" channel_id="6" attribute_name="DIM" />
    					<Value>0.000</Value>
    				</CueData>
    et le fichier xsl est en pièce jointe.

    Je voudrais faire afficher dans le tableau que les lignes ou la valeur de "channel" est différente de "0.000".

    Je pense que ça se passe entre la ligne 341 et 351 du xsl (d'ailleur je l'ai isolé avec des lignes vides) avec un if mais je n'arrive pas à récupérer la valeur de "channel".

    Comment dois-je faire ?

    D'avance merci.
    Fichiers attachés Fichiers attachés

  2. #2
    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
    Je dirais
    <xsl:when test="$value='0.000'">
    ce n'est pas terrible, mais pourquoi pas? ça doit marcher tout de même aux cas très specifiques montrés.

    Mais le problème: où peut y avoir ma:CuePart? Je la vois nul part.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 68
    Par défaut
    Merci de m'avoir répondu tsuji.
    J'ai essayé de rajouter la ligne que tu m'as indiqué mais ou que je la mette, il y a une erreur quand j'ouvre le fichier xml pour voir ce que ça donne. L'erreur est :

    Erreur lors du chargement de la feuille de style : Échec de l'analyse d'une feuille de style XSLT.
    je voudrais préciser que je souhaite ne pas afficher la ligne complete quand channel = 0.000

    Une autre idée ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 68
    Par défaut
    je viens d'essayer de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <xsl:if test ="value!='0.000'">
    mais s'affiche que les titres des colonnes, donc ça masque tout, alors que je veux masquer que les lignes ou valeur=0.000.

  5. #5
    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
    'Faudrait nous dire où tu l'as mis, le xsl:if.
    Logiquement il devrait englober tout le <tr> (là ligne, donc,) et rien d'autre.

    Éventuellement tu peux aussi faire cette vérification sur le select du apply-templates, histoire de ne même pas appeler le template sur les lignes que tu ne veux pas afficher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    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
    [1]
    J'ai essayé de rajouter la ligne que tu m'as indiqué mais ou que je la mette, il y a une erreur quand j'ouvre le fichier xml pour voir ce que ça donne. L'erreur est :

    " Erreur lors du chargement de la feuille de style : Échec de l'analyse d'une feuille de style XSLT."
    Je dis je ne vois ma:CuePart nul part. Mais, il ne doit certainement pas rajouter arbitrairement une balise ma:CuePart. La raison que le xsl a besoin cet élément est une résultat d'analyse de progrès des templates.

    xsl:template match="/" contient
    xsl:apply-templates
    et il va 'matching'
    ma:Info et ma:Sequ
    Jusqu'à là, c'est sans problème.

    xsl:template match="ma:Sequ" contient
    xsl:apply-templates select="ma:CuePart"
    Mais justement on ne trouve pas CuePart comme un enfant de Sequ; et le progrès s'arrête là. C'est ça le problème que j'avais soulevé.

    [2]
    je voudrais préciser que je souhaite ne pas afficher la ligne complete quand channel = 0.000
    Si je comprends bien, vous voulez dire channel quand son sibling Value a une texte 0.000. Et bien, vous pouvez faire ça: remplacez le template ma:CueData par deux templates. L'un d'eux, vous gardez ce que vous avez; et l'autre sans rien faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <!--
    <xsl:template match="ma:CueData" >
    -->
    <xsl:template match="ma:CueData[Value!='0.000']">
     	<xsl:param name="value_multipart_index" /> 
    	<xsl:param name="effect_multipart_index" /> 
    	<!-- etc etc gardez le même contenu -->
    </xsl:template>
    <xsl:template match="ma:CueData[Value='0.000']" />
    [2.1] Vous pouvez lever le hazardeous testing par la fonction number().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <!--
    <xsl:template match="ma:CueData" >
    -->
    <xsl:template match="ma:CueData[number(Value)!=0]">
     	<xsl:param name="value_multipart_index" /> 
    	<xsl:param name="effect_multipart_index" /> 
                 <!-- etc etc gardez le même contenu -->
    </xsl:template>
    <xsl:template match="ma:CueData[number(Value)=0]" />
    [3] Aussi je découvre là peut y avoir un problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	<span class="value">
    	<!-- faut pas faire ça -->
    	<!-- Loop : Loop to -->
    	<xsl:attribute name="href">#cue<xsl:call-template name="CueNumberFormatter"><xsl:with-param name="cueNumber" select="ma:LoopDestination"/></xsl:call-template></xsl:attribute>
    	<!-- replacer ici -->
    	<xsl:text>Loop : Loop to</xsl:text>
    	<xsl:text>Cue </xsl:text>
    	<xsl:call-template name="CueNumberFormatter"><xsl:with-param name="cueNumber" select="ma:LoopDestination"/></xsl:call-template>
    	<xsl:text> / </xsl:text>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 68
    Par défaut
    Encore merci de m'aider.

    J'ai fait les changements que tu m'as conseillé, mais :
    pour le point [2] il me met tout dans la case channel (voir image ci-dessous)



    J'ai donc essayé la deuxième solution mais on revient au problème initial.

    As tu une autre idée ?

  8. #8
    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
    Oui, désolé... j'ai oublié de mettre partout le préfixe devant Value: il faut remplacer Value par ma:Value là où je ne l'ai pas mis. Essayez encore?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 68
    Par défaut
    SUPER ça marche !

    Merci beaucoup.

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

Discussions similaires

  1. boucles avec conditions pour faire un suivi
    Par lilyla dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/03/2008, 11h53
  2. Réponses: 4
    Dernier message: 25/05/2007, 08h35
  3. [XSLT] probleme pour faire des tableaux html
    Par Lockless dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 16/06/2006, 16h04
  4. [XSLT] aide pour faire un tableau HTML avec fusion de lignes
    Par utwor dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 02/01/2006, 21h41
  5. Condition pour l'affichage d'une boite de message
    Par Virgile59 dans le forum Access
    Réponses: 19
    Dernier message: 05/10/2005, 14h22

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