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 :

besoin d'aide pour insérer une condition


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut besoin d'aide pour insérer une condition
    Bonjour à tous,
    j'essaie de rajouter une condition dans un fichier .xsl existant mais je n'y arrive pas.

    Je veux faire en sorte que s'affiche que les attribute_name= "DIM" avec leur valeur correspondante.
    J'ai réussi à filtrer les attribute_name mais pas leur valeur
    j'ai essayé avec <xsl:if> avec <xsl:when> vers la ligne 289 mais sans succes.

    Voici les fichiers xml et xsl
    contenu_conduite(dim).xsl

    https://drive.google.com/file/d/0B5F...it?usp=sharing

    Quelqu'un peut il me dire comment faire ?*
    D'avance merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Probablement pas. Mais on t'aidera sûrement à trouver la solution, si tu fais des efforts.

    Quand on cherche une technique, on ne ne le fait pas sur des fichiers de 300 lignes qui n'ont rien à voir. Ou enlève tout ce qui n'est pas lié au problème, et on ne garde que le problème, et rien d'autre.

    Commence par nous montrer ça. Et pas sur Google Drive, tu devrais te retrouver avec deux fichiers, xsl et xml, d'environ une vingtaine de lignes chacuns. Copie ces lignes ici et mets-les entre balises [CODE] (le bouton qui fait # dans la barre d'outils.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Je me suis dit que toute la structure du xml était importante, c'est vrai que c'est un gros fichier.

    voila donc une partie 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
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="styles/sequ.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.4.3/MA.xsd" major_vers="2" minor_vers="5" stream_vers="3">
         <Info datetime="2012-01-15T15:42:39" showfile="new show 2012-01-15" />
         <Sequ index="0" name="Conduite" tracking="false">
    		<Cue xsi:nil="true" />
    		<Cue index="1">
    			<Number number="1" sub_number="000" />
    			<CueDatas>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="400" channel_id="400" attribute_name="DIM" />
    					<Value>100.000</Value>
    				</CueData>
    				<CueData value_multipart_index="0" effect_multipart_index="0">
    					<Channel fixture_id="401" channel_id="401" attribute_name="SCROLLER" />
    					<Value>100.000</Value>
    				</CueData>
    			</CueDatas>
    			<CuePart index="0" name="Noir" basic_fade="0.000" />
    		</Cue>
    et voici une partie fichier .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
    35
    36
    37
    38
    39
    40
    41
    42
     
    <xsl:template match="ma:CueData" >
     	<xsl:param name="value_multipart_index" /> 
    	<xsl:param name="effect_multipart_index" /> 
     
    		<xsl:call-template name="ChannelLinkFormatter">
    		<xsl:with-param name="channelLink" select="ma:Channel"/>
    		</xsl:call-template>
     
    		<xsl:choose>
    			<xsl:when test="@value_multipart_index=$value_multipart_index ">
     
    				<xsl:call-template name="ValueFormatter"><xsl:with-param name="value" select="ma:Value"/></xsl:call-template> 
     
    			</xsl:when>
    		</xsl:choose>
     
    </xsl:template>  
     
     
    <xsl:template name="ChannelLinkFormatter">
    	<xsl:param name="channelLink" /> 
     
    	<xsl:if test="$channelLink/@attribute_name='DIM'">
     
    		<b><xsl:value-of  select="$channelLink/@attribute_name" /> 
    		<xsl:text> </xsl:text>
     
    		<xsl:choose>
    			<xsl:when test="$channelLink/@channel_id>0"><xsl:value-of  select="$channelLink/@channel_id" /></xsl:when>
    			<xsl:otherwise>-</xsl:otherwise>
    		</xsl:choose>
     
    			<xsl:choose>
    			<xsl:when test="$channelLink/@subfixture_id>0">
    				<xsl:value-of  select="$channelLink/@subfixture_id" />
    				</xsl:when>
    		</xsl:choose>
    		<xsl:text>=</xsl:text></b>
     
    	</xsl:if>
    </xsl:template>

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par wholehog2 Voir le message
    Je me suis dit que toute la structure du xml était importante, c'est vrai que c'est un gros fichier.
    Oui, la structure est très importante et tu dois absolument nous montrer la structure que tu essaies.

    Mais
    - la structure sur laquelle tu fais tes essais, n'a pas besoin d'être exactement la même que celle du fichier que tu traiteras quand tu sauras faire. Elles seront typiquement semblables, mais peut-être moins profondes, et peut-être sans namespace.

    - tes fichiers contiennent beaucoup de choses qui n'ont rien à voir avec la structure et avec ton problème, donc ça, pas à hésiter, tu vires.

    Citation Envoyé par wholehog2 Voir le message
    voila donc une partie du fichier .xml
    Non on ne s'est pas compris. Je te demande de travailler.
    Pas de prendre des lignes ici ou là pour que ça soit petit, mais de les rendre petits.

    Faire en sorte qu'on voit le début, la fin, le milieu, en entier, mais que tout ça, ce soit petit. En enlevant tout ce qui n'a rien à voir avec le problème. Et pour le XML, en limitant les répétitions. 3 ou 4 exemples suffisent largement.


    Une fois que ce sera fait, la situation sera infiniment plus claire, pour toi comme pour nous, et, si tu as encore besoin d'aide, on comprendra peut-être tout de suite quel est ton problème.
    Mais au cas où ce ne soit pas le cas, ce serait bien d'expliquer la situation "pour l'instant j'obtiens ceci, mais ce que je cherche, c'est obtenir cela."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Donc nouvelle tentative, j'espère que ce sera la bonne !
    le xml et sous cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <CueData value_multipart_index="0" effect_multipart_index="0">
    	<Channel fixture_id="400" channel_id="400" attribute_name="DIM" />
    	<Value>100.000</Value>
    </CueData>
    <CueData value_multipart_index="0" effect_multipart_index="0">
    	<Channel fixture_id="401" channel_id="401" attribute_name="SCROLLER" />
    	<Value>100.000</Value>
    </CueData>
    pour le 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
     
    <xsl:template match="ma:CueData" >
     	<xsl:param name="value_multipart_index" /> 
    	<xsl:param name="effect_multipart_index" /> 
     
    		<xsl:call-template name="ChannelLinkFormatter">
    		<xsl:with-param name="channelLink" select="ma:Channel"/>
    		</xsl:call-template>
     
    		<xsl:choose>
    			<xsl:when test="@value_multipart_index=$value_multipart_index ">
     
    				<xsl:call-template name="ValueFormatter"><xsl:with-param name="value" select="ma:Value"/></xsl:call-template> 
     
    			</xsl:when>
    		</xsl:choose>
     
    </xsl:template
    Je pense qu'il faut ajouter un xsl:if à la ligne 9 pour que s’exécute les lignes 10 à 16 si attribute_name="DIM"
    mais tous mes essais n'ont pas fonctionné.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par wholehog2 Voir le message
    Donc nouvelle tentative, j'espère que ce sera la bonne !
    Ben ça n'en a pas trop l'air puisque ce n'est pas ce que j'ai demandé. Logiquement, pour essayer de faire ce qu'il faut, il faudrait déjà que ce soit ce que j'ai demandé, enfin je sais pas, dans ma tête ça paraissait logique.

    Mais bon, on va supposer que peut-être, c'est suffisant comme ça.

    Sauf que du coup j'ai aucune idée de ce que tu essaies de faire : qu'est-ce que ça fait maintenant et qu'est-ce qu'il faudrait que ça fasse à la place ? C'est un des trucs que j'avais demandé au cas où ce soit pas évident, tu te rappelles ? Eh ben c'est pas évident, alors il va falloir que tu nous montres ça aussi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Ne te sent pas obligé de répondre!
    Au cas ou ça ne t'embète pas, le résultat que je souhaite obtenir est l'affichage des attribute_name="DIM" avec leur valeur mais pas les autres attribute_name.
    Aprés mes différents essais, j'obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Cue 5 "Mise Acte 1"
     
        Trigger: Go
        Mode: Normal
        Loop: -
     
    DIM 10=DIM 20=DIM 86=DIM 201=DIM 202=DIM 203=DIM 204=DIM 205=DIM 207=DIM 208=DIM 209=DIM 210=DIM 400=DIM 401=
    il manque les valeurs correspondantes aux attribute_name="DIM"

  8. #8
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Bonjour
    Qu'est-ce que tu appelle "les valeurs correspondantes aux attribute_name="DIM"" ? les autres attributs de la balise <Channel> quand la valeur <attribute_name>=DIM ?

    C'est vrai que ce n'est pas très clair ta demande, tu pourrais poster un exemple de ce que tu voudrais obtenir ?
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Oui c'est bien ça.
    Pour le bout de fichier xml que j'ai mis plus haut je voudrais que s'affiche :

    DIM 400=100%

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par wholehog2 Voir le message
    Ne te sent pas obligé de répondre!
    Jamais, je te rassure.
    Mais puisqu'on prend la peine de le faire, peut-être que ce serait intéressant de suivre nos conseils ?

    Citation Envoyé par wholehog2 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Cue 5 "Mise Acte 1"
     
        Trigger: Go
        Mode: Normal
        Loop: -
     
    DIM 10=DIM 20=DIM 86=DIM 201=DIM 202=DIM 203=DIM 204=DIM 205=DIM 207=DIM 208=DIM 209=DIM 210=DIM 400=DIM 401=
    J'ai testé ton code, et non, il n'affiche pas ça.

    Normal : ton code ne contient absolument aucune instruction d'écrire quoi que ce soit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    OK
    Il te suffit donc d'utiliser des prédicats (entre crochets) sur Value qui te permettra de sélectionner les Values, dont le parent Channel a un attribute_name = à ta valeur souhaitée (DIM)

    Je te laisse maintenant que tu as la procédure faire ligne magique qui fait cela...
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Oui Thelvin, de ce que j'ai compris, l'affichage se fait par un 'template' que j'ai mis dans le xsl de mon 2eme message.

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    "De ce que tu as compris" ? On va aller loin, avec ça. Tu as inséré ce template pour qu'il fasse ça ou pour qu'il fasse autre chose ? En fait, plus simple : à quoi sert ce template, pourquoi tu l'as fait ?

    Et donc, si c'est lui qui s'occupe de faire le boulot, pourquoi il n'était pas dans ta dernière tentative ?

    En toute logique, si c'est lui qui s'occupe d'afficher des trucs, c'est lui que tu devrais modifier pour afficher plus de trucs que ce qu'il affichait déjà. Étant donné ce que tu demandes, je ne vois aucun intérêt à mettre d'autre if que celui qui est déjà là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Ce n'est pas moi qui est créer se fichier xsl il existait déjà et je veux le modifier à ma sauce.

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ok, mais pour ça il faut déjà que tu comprennes ce que tu fais, n'est-ce pas ?

    Je t'ai demandé de refaire les fichiers, de zéro, pour qu'ils ne contiennent que ce qui nous intéresse, histoire de se concentrer dessus.
    Normalement tu aurais déjà dû le faire quand tu essayais encore de t'en sortir tout seul, mais bon, je te l'ai demandé.

    C'est pas encore fait ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...dans un moment d'égarement j'ai failli écrire la solution directement tout à l'heure, mais effectivement cela demande un peu de rigueur et d'investissement personnel, on va attendre un peu



    Citation Envoyé par thelvin Voir le message
    Ok, mais pour ça il faut déjà que tu comprennes ce que tu fais, n'est-ce pas ?

    Je t'ai demandé de refaire les fichiers, de zéro, pour qu'ils ne contiennent que ce qui nous intéresse, histoire de se concentrer dessus.
    Normalement tu aurais déjà dû le faire quand tu essayais encore de t'en sortir tout seul, mais bon, je te l'ai demandé.

    C'est pas encore fait ?
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Tous mes essais on donné la même chose à savoir que ça n'affiche aucune valeur même si attribute_name est égal à "DIM"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Cue 5 "Mise Acte 1"
     
        Trigger: Go
        Mode: Normal
        Loop: -
     
    DIM 10=DIM 20=DIM 86=DIM 201=DIM 202=DIM 203=DIM 204=DIM 205=DIM 207=DIM 208=DIM 209=DIM 210=DIM 400=DIM 401=
    voila ce que j'ai écrit dans mon xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:if test="@attribute_name='DIM'">
     
    		<xsl:call-template name="ValueFormatter"><xsl:with-param name="value" select="ma:Value"/></xsl:call-template> 		
     
    </xsl:if>
    j'ai aussi essayé avec les prédicats mais ça ne marche pas non plus. Il ne reconnait pas la condition.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 31
    Points
    31
    Par défaut
    Ca y est ça marche !!

    merci à tous.

Discussions similaires

  1. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04
  2. besoin d 'aide pour formuler une requête
    Par cdu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/04/2006, 19h38
  3. besoin d'aide pour optimiser une requête
    Par jisse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 09h41
  4. Besoin d'aide pour afficher une image dans un applet
    Par argon dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 19/01/2006, 19h45
  5. besoin d'aide pour intégrer une entité dans un MCD
    Par barkleyfr dans le forum Schéma
    Réponses: 17
    Dernier message: 13/10/2005, 13h29

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