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 :

comment ajouter une condition ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut comment ajouter une condition ?
    bonjour,
    je veux réaliser un XSLT pour passer d'un xml à un autre mais j'ai un problème de syntaxe
    mon fichier xml initial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <process id="process" isExecutable="true"> 
    <startEvent id="sid-BEF2442F-5A88-4A2C-8CE7-758BD0DF22D0"/> 
    <userTask id="sid-615ABB5C-437B-490F-9D80-A7105D034CD3"/> 
    <sequenceFlow id="sid-06902D8E-B3FD-45C7-BFEC-08306D7CB087" sourceRef="sid-BEF2442F-5A88-4A2C-8CE7-758BD0DF22D0" targetRef="sid-615ABB5C-437B-490F-9D80-A7105D034CD3"/> 
    <userTask id="sid-57B833D8-D076-46D3-B1B9-58BF917B5186"/> 
    <sequenceFlow id="sid-FC61B8CB-B40C-4B37-BF0E-0811B72DF0CB" sourceRef="sid-615ABB5C-437B-490F-9D80-A7105D034CD3" targetRef="sid-57B833D8-D076-46D3-B1B9-58BF917B5186"/> 
    <endEvent id="sid-70E2DB5F-5799-4A57-8D06-9EFD3CD5EC4E"/> 
    <sequenceFlow id="sid-D18F8537-03B2-4CA1-8F53-13E80EF0C699" sourceRef="sid-57B833D8-D076-46D3-B1B9-58BF917B5186" targetRef="sid-70E2DB5F-5799-4A57-8D06-9EFD3CD5EC4E"/> 
    </process>
    quant à mon xslt :
    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
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:drools="http://www.jboss.org/drools" 
      xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"    xmlns="urn:jbpm.org:jpdl-3.2"> 
    <xsl:template match="bpmn:startevent"> 
       <start-state> 
          <xsl:attribute name="name"> 
              <xsl:value-of select="@name"/> 
          </xsl:attribute> 
       </start-state> 
    </xsl:template>
    <!-- -------------------------------------------------------------
                                ici
    -------------------------------------------------------------- -->
    <xsl:if test="startEvent/@id=sequenceFlow/@sourceRef">
    <xsl:template match="bpmn:sequenceFlow"> 
      <transition> 
        <xsl:attribute name = "name"> 
          <xsl:value-of select="@name"/> 
        </xsl:attribute> 
        <xsl:attribute name="id"> 
          <xsl:value-of select="translate(@name,' ','_')"/> 
        </xsl:attribute> 
        <xsl:attribute name="to"> 
          <xsl:value-of select="@targetRef"/> 
        </xsl:attribute> 
      </transition> 
    </xsl:template> 
    </xsl:if> 
    </xsl:stylesheet>
    mais ce code ne marche pas mlheureusement, il ya une erreur au niveau de la condition if
    Ce que je veux exprimer : je dois tester si l'id du startEvent est égale à sourceRef de sequenceFlow si oui dans ce cas je vais afficher la transition dans mon nouveau xml

  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
    C'est du XML et du XSLT un peu bizarre, tout ça -_-°.

    Bon, <xsl:if> ça se met au même endroit que tu pourrais mettre du <xsl:value-of> par exemple. Donc pas là.
    On ne peut pas mettre un template dans une condition, d'ailleurs, ce serait une condition par rapport à quoi ? Ça n'a pas trop de sens.

    Mais rien ne t'empêche de mettre dans <xsl:if> dans le <xsl:template>.

    Après il faut la bonne syntaxe bien sûr.
    - sequenceFlow n'a rien à faire dans le if, puisqu'il est déjà dans le template.
    - startEvent il ne va pas deviner où il faut aller le chercher. Ce n'est pas un enfant de sequenceFlow , alors ça ne va pas. Par exemple il faut faire //startEvent pour aller chercher n'importe quel élément <startEvent> dans le document.
    - Ce bpmn: que tu as pensé à mettre dans les templates, tu es pas dispensé de le mettre dans les if. Donc c'est //bpmn:startEvent . C'est l'information du namespace de l'élément, il faut la mettre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    vous voulez dire comme ça ?
    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
     <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:drools="http://www.jboss.org/drools" 
      xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"    xmlns="urn:jbpm.org:jpdl-3.2"> 
    <xsl:template match="bpmn:startevent"> 
       <start-state> 
          <xsl:attribute name="name"> 
              <xsl:value-of select="@name"/> 
          </xsl:attribute> 
       </start-state> 
    </xsl:template>
    <xsl:template match="bpmn:sequenceFlow"> 
    <xsl:if test="//startEvent/@id=@sourceRef">
      <transition> 
        <xsl:attribute name = "name"> 
          <xsl:value-of select="@name"/> 
        </xsl:attribute> 
        <xsl:attribute name="id"> 
          <xsl:value-of select="translate(@name,' ','_')"/> 
        </xsl:attribute> 
        <xsl:attribute name="to"> 
          <xsl:value-of select="@targetRef"/> 
        </xsl:attribute> 
      </transition> 
    </xsl:template> 
    </xsl:if> 
    </xsl:stylesheet>
    Ca marche pas ..

  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
    Oui ben, ça marche pas parce qu'il faut pas faire n'importe quoi non plus.
    Quand tu ouvres avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="bpmn:sequenceFlow"> 
    <xsl:if test="//startEvent/@id=@sourceRef">
    Il faut fermer dans le bon ordre avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    </xsl:if> 
    </xsl:template>
    évidemment.

    De plus, tu n'as toujours pas mis le bpmn: dans le if. Il faut.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Drupal] Comment ajouter une condition presave pour un type de contenu?
    Par maxwel56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 26/04/2012, 18h25
  2. comment ajouter une condition if dans code VBA
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/12/2007, 00h03
  3. Comment ajouter une icone à une JInternalFrame
    Par wassimb dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 12/07/2006, 15h13
  4. Réponses: 3
    Dernier message: 07/10/2005, 12h07
  5. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08

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