[XML/XSL]Condition if

Condition if [XML/XSL] - XML/XSL - Programmation

Marsh Posté le 31-07-2009 à 17:12:49    

Bonjour,
 
Je travail actuellement sur un script qui vas chercher les variables date/heure dans un équipement. Le format ne me convient pas, petit exemple : pour juillet j'ai 7 et je voudrais 07 (idem pour l'heure etc...).
 
Je bloque depuis pas mal d'heures dessus car je ne connais pas su tout le langage xml, j'ai cherché sur google et j'ai trouvé de nombreux format différent pour mon if. Il y a des if cond=, des if test= etc et la syntaxe n'est jamais la même...
 
En gros je voudrai simplement faire ca : if $mon < 10
 
 
J'ai compris rapidement que les < > c'était assez critique à manipuler en xml donc j'ai fais mes tests avec =  
J'ai essayé plein de synthaxe, ce n'a jamais fonctionné :
 
<if $mon = 10>
<if ($mon = 10)>
<if "$mon" = "10">
<if "$mon" = '10'>
<if "$mon" = 10>
.....
 
idem avec des if test= et des if cond=
 
La je sature donc je vous demande de m'aider un poil. Je sais que ca doit être super simple en plus...
 
D'avance merci.
 
Seb


Message édité par seb06bes le 31-07-2009 à 17:39:35
Reply

Marsh Posté le 31-07-2009 à 17:12:49   

Reply

Marsh Posté le 31-07-2009 à 17:27:33    

C'est presque ça...

<xsl:if test="$month lt 10">


 
T'as pensé a Google?

Reply

Marsh Posté le 31-07-2009 à 17:29:45    

Merci je vais essayé ca.
 
Oui bien sur j'ai pensé à google : condition if xml
 
et il n'y a aucune trace de "lt" j'ai aussi parcouru des tutos en vain.
 
Je te tiens au courant, en tout cas merci encore.

Reply

Marsh Posté le 31-07-2009 à 17:34:53    

seb06bes a écrit :

Merci je vais essayé ca.
 
Oui bien sur j'ai pensé à google : condition if xml
 
et il n'y a aucune trace de "lt" j'ai aussi parcouru des tutos en vain.
 
Je te tiens au courant, en tout cas merci encore.


Tu fais pas du XML là tu fais du XSL [:prozac]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-07-2009 à 17:36:41    

Je comprends mieux, ca ne fonctionne pas.
 
Voici un résumé de mon code.
 
<?xml version="1.0" encoding="utf-8" ?>
<voicemail xmlns="http://www.innovaphone.com/xsd/voicemail6.xsd">
    <function define="Main">
        <pbx-getcallinfo out-cgpn="$cgpn" out-leg2="$leg2"/>
        <pbx-finduser-e164 e164="$cgpn" out-cn="$cn" />
   <store-getstat name="NULL" out-mday="$mday" out-mon="$mon" out-year="$year" out-hour="$hour" out-min="$min" />  
   <lib-strcat string="$cn" string2="/store" out-string="$sub" />
   <store-getnew root="$sub" out-url="$ctrl"/>
 
   <xsl:if test="$mon lt 10">  
    <lib-strcat string="$ctrl" string2="0" out-string="$ctrl" />
    <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
   </xsl:if>  
   <else>
    <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
    </else>  
 
   <lib-strcat string="$ctrl" string2=".g729" out-string="$ctrl" />
   <pbx-record url="$ctrl" barge-in="false"/>
  <pbx-disc/>
    </function>
</voicemail>
 
Je ne sais pas s'il faut un if comme ca :
 
 <xsl:if test="$month > 10">  
  <lib-strcat string="$ctrl" string2="0" out-string="$ctrl" />
  <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
 </xsl:if>  
 
Ou comme ca :  
 <if test="$month > 10">  
  <lib-strcat string="$ctrl" string2="0" out-string="$ctrl" />
  <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
 </if>  
 
Sachant dans ces 2 cas que ca ne peut pas fonctionner à cause du > qui considère qu'on ferme le if.
 
Merci


Message édité par seb06bes le 31-07-2009 à 17:39:13
Reply

Marsh Posté le 03-08-2009 à 09:55:46    

Qu'est ce qui est mauvais dans mon code?
 
sachant que j'ai suivi ce que tu m'a indiqué : <xsl:if test="$month lt 10">
 
Je ne trouve aucune trace de ce lt sur google


Message édité par seb06bes le 03-08-2009 à 09:57:57
Reply

Marsh Posté le 03-08-2009 à 10:20:37    

http://lmgtfy.com/?q=xsl+if

 

première réponse:

Code :
  1. <xsl:if test="$month &lt; 10">
 

t'as du bien chercher.


Message édité par pataluc le 03-08-2009 à 10:20:57
Reply

Marsh Posté le 03-08-2009 à 10:40:37    

Merci j'avais trouvé ces sites et comme je l'ai dis aussi j'ai trouvé pleins de synthaxe différente, la preuve avander m'a donné <xsl:if test="$month lt 10"> j'avais ensuite essayé <xsl:if test="$month $lt 10">
 
Ca ne fonctionne toujours pas avec <xsl:if test="$month $lt; 10">

Message cité 1 fois
Message édité par seb06bes le 03-08-2009 à 10:44:14
Reply

Marsh Posté le 03-08-2009 à 10:47:30    

Pour résumer ce que je souhaite faire :

 

    Si $mon < 10, alors
      <lib-strcat string="$ctrl" string2="0" out-string="$ctrl" />
      <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
     Finsi
     Sinon
      <lib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
     Finsinon

 

Les parties en gros sont à coder pour que le reste du script fonctionne.


Message édité par seb06bes le 03-08-2009 à 10:52:32
Reply

Marsh Posté le 03-08-2009 à 10:49:00    

seb06bes a écrit :

Merci j'avais trouvé ces sites et comme je l'ai dis aussi j'ai trouvé pleins de synthaxe différente, la preuve avander m'a donné <xsl:if test="$month lt 10"> j'avais ensuite essayé <xsl:if test="$month $lt 10">

 

Ca ne fonctionne toujours pas avec <xsl:if test="$month $lt; 10">


relis bien ce que j'ai mis. et essaie de comprendre la logique de la syntaxe.


Message édité par pataluc le 03-08-2009 à 10:49:50
Reply

Marsh Posté le 03-08-2009 à 10:49:00   

Reply

Marsh Posté le 03-08-2009 à 10:55:19    

Sur le site http://www.xml.com/pub/a/2003/04/02/trxml.html
 
Il ne disent nulle part $lt mais < et > quand on est dans du <xsl:if  
 
Je ne comprends pas ce qu'il y a à comprendre dans la synthaxe. C'est du codage, si un ""Si $mon < 10, alors"" s'écrit <xsl:if test="$month $lt; 10"> je ne vois pas trop ce qu'il y a à comprendre.
 
Je ne comprend pas pourquoi l'autre site utilise les < et >
 
Désolé, je suis pas programmeur, j'ai juste fais un peu de prog en C en iut mais mon boss ne veut rien savoir... je suis dépassé par toutes les infos qui se contredise


Message édité par seb06bes le 03-08-2009 à 10:56:42
Reply

Marsh Posté le 03-08-2009 à 10:57:34    

quand je dis relis mon post, c'est parce que c'est un "&lt;" et pas un "$lt;".
 
d'où la "logique" de la syntaxe: on met un & car c'est un échappement html/xml et pas une variable.

Reply

Marsh Posté le 03-08-2009 à 11:08:09    

Merci je n'avais pas fait attention en effet.
 
Cela ne fonctionne toujours pas. Ce que je ne comprends pas c'est pourquoi mon "sinon" ne fonctionne pas non plus. Tu pense qu'un "if" mal configurer peut faire planter le script et donc ne pas lire la suite du programme ?

Reply

Marsh Posté le 03-08-2009 à 11:13:26    

je suis pas un spécialiste xsl, mais oui ca me semble logique.
 
essaie donc de virer donc else, et fait déja fonctionner ton if...

Reply

Marsh Posté le 03-08-2009 à 11:14:46    

Reply

Marsh Posté le 03-08-2009 à 11:38:34    


Oui et non: pas de if/else en XSLT, mais xsl:choose peut faire le même boulot:

Code :
  1. <xsl:choose>
  2.    <xsl:when test="$condition">
  3.        <!-- si $condition est true -->
  4.    </xsl:when>
  5.    <xsl:otherwise>
  6.        <!-- si $condition est false -->
  7.    </xsl:otherwise>
  8. </xsl:choose>


xsl:choose fonctionne comme un switch/case sans fallthrough.


Message édité par masklinn le 03-08-2009 à 11:43:57

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-08-2009 à 11:40:02    

Depuis le début je ne sais pas si'l faut utiliser du xsl car dans le script que j'ai modifié il y avait des if et des else et ca fonctionnait. Par contre je ne comprenais pas leur synthaxe :
 
        <if cond="$cn">
            <if cond="$leg2">
                  ............
            </if>
            <else>
                   ...........
            </else>
            ...............
        </if>
 
Ici il n'y a pas de xls, tout en xml. Par contre je ne comprends pas les if... moi je veux juste "if $mon < 10" c'est tout...

Reply

Marsh Posté le 03-08-2009 à 11:44:07    


seb06bes a écrit :

Depuis le début je ne sais pas si'l faut utiliser du xsl car dans le script que j'ai modifié il y avait des if et des else et ca fonctionnait. Par contre je ne comprenais pas leur synthaxe :

Code :
  1. <if cond="$cn">
  2.    <if cond="$leg2">
  3.        
  4.    </if>
  5.    <else>
  6.  
  7.    </else>
  8.  
  9. </if>


 
Ici il n'y a pas de xls, tout en xml. Par contre je ne comprends pas les if... moi je veux juste "if $mon < 10" c'est tout...


Je sais pas ce qu'est ce truc, mais c'est sûrement pas du XSL (XLS ce sont les fichiers excel). Pour les dialectes custom à la con, faut voir leur source ya pas de magiciens ici personne peut aider.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-08-2009 à 12:11:01    

Bon ok je vais donner le script entier avec le commande que je souhaite avoir en gras :
 
<?xml version="1.0" encoding="utf-8" ?>
<voicemail xmlns="http://www.innovaphone.com/xsd/voicemail6.xsd">
    <function define="Main">
        <pbx-getcallinfo out-cgpn="$cgpn" out-leg2="$leg2"/>
        <pbx-finduser-e164 e164="$cgpn" out-cn="$cn" />
   <store-getstat name="NULL" out-mon="$mon" out-year="$year"/>  
   <lib-strcat string="$cn" string2="/store" out-string="$sub" />
   <store-getnew root="$sub" out-url="$ctrl"/>
   <lib-strcat string="$ctrl" string2="-" out-string="$ctrl" />
   <lib-strcat string="$ctrl" string2="$year" out-string="$ctrl" />
   <lib-strcat string="$ctrl" string2="." out-string="$ctrl" />
 
   Si $mon < 12 alors :
    <lib-strcat string="$ctrl" string2="0" out-string="$ctrl" />
    <ib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
   
   Sinon
    <ib-strcat string="$ctrl" string2="$mon" out-string="$ctrl" />
   
   <lib-strcat string="$ctrl" string2="-" out-string="$ctrl" />
  <!-- Numero appelant -->
   <lib-strcat string="$ctrl" string2="$cgpn" out-string="$ctrl" />
   <lib-strcat string="$ctrl" string2="-" out-string="$ctrl" />
  <!-- Numero appele -->
   <lib-strcat string="$ctrl" string2="$leg2" out-string="$ctrl" />
  <!-- Choix du codec .g711a ou .g729 -->
   <lib-strcat string="$ctrl" string2=".g729" out-string="$ctrl" />
   <pbx-record url="$ctrl" barge-in="false"/>
  <pbx-disc/>
    </function>
</voicemail>


Message édité par seb06bes le 03-08-2009 à 12:12:10
Reply

Marsh Posté le 03-08-2009 à 13:07:56    

c'est moi ou ca ressemble pas complètement à du xsl ton truc?

Reply

Marsh Posté le 03-08-2009 à 13:46:22    

pataluc a écrit :

c'est moi ou ca ressemble pas complètement à du xsl ton truc?


C'en est pas, voir au dessus.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-08-2009 à 13:55:49    

Non ce n'est pas du xls, je n'ai jamais dis ca.
 
J'ai juste dis que c'était du xml.
 
Le code que j'ai mis n'est pas suffisant ? car je ne dispose de rien de plus.

Reply

Marsh Posté le 03-08-2009 à 14:12:42    

nan mais ce qu'on te dit (enfin surtout masklinn) c'est que vu que c'est du code non standard, propre à ton domaine et/ou ta boite ("Pour les dialectes custom à la con" dixit masklinn) on peut pas deviner d'où vient le problème.
 
ton xml il est interprété par quoi/qui, etc...

Reply

Marsh Posté le 03-08-2009 à 14:23:28    

ah ok, c'est un système de boite vocal qui utilise un fichier vm.xml
 
Pour ajouter la fonction d'enregistrement il faut lui ajouter le record.xml (le fichier que je vous ai mis un peu plus haut).  
 
C'est un équipement de téléphonie voix sur IP qui s'occupe de tout ca. C'est allemand et leur support n'est pas au top... Il m'ont renvoyé plusieurs fichier record.xml que j'ai du débuggé. Et comme je l'ai dis au début, je voudrais juste ajouter un 0 quand le mois indiqué est en dessous de 10 pour avoir 08 par exemple a la place de 8.

Reply

Marsh Posté le 03-08-2009 à 14:27:58    

seb06bes a écrit :

ah ok, c'est un système de boite vocal qui utilise un fichier vm.xml
 
Pour ajouter la fonction d'enregistrement il faut lui ajouter le record.xml (le fichier que je vous ai mis un peu plus haut).  
 
C'est un équipement de téléphonie voix sur IP qui s'occupe de tout ca. C'est allemand et leur support n'est pas au top... Il m'ont renvoyé plusieurs fichier record.xml que j'ai du débuggé. Et comme je l'ai dis au début, je voudrais juste ajouter un 0 quand le mois indiqué est en dessous de 10 pour avoir 08 par exemple a la place de 8.


C'est bien mais on peut pas t'aider, faut demander aux gars d'en face ou aux gens de ta boite comment fonctionne leur truc [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-08-2009 à 14:44:34    

ok, je comprends.
 
Je pensais que c'était du xml classique et qu'il suffisait de connaitre la syntaxe d'un "if $X < Y" pour me dépatouiller.  
 
D'autant plus qu'il y avait un if dans leur 1ere version du fichier : <if cond="$cn"> mais incompréhensible pour moi car je ne comprends pas à quoi est comparé $cn...
 
Pour moi "cond", c'est comme "test".

Message cité 1 fois
Message édité par seb06bes le 03-08-2009 à 14:46:55
Reply

Marsh Posté le 03-08-2009 à 15:29:12    

seb06bes a écrit :

ok, je comprends.
 
Je pensais que c'était du xml classique


Le "XML classique" ça n'existe pas. XML n'est pas un langage, c'est un meta-language/meta-format. En soi, XML ne veut strictement rien dire et n'a aucun intérêt (pas que ça en ait beaucoup plus quand on ajoute des couches) [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed