Condition if [XML/XSL] - XML/XSL - Programmation
Marsh Posté le 31-07-2009 à 17:27:33
C'est presque ça...
<xsl:if test="$month lt 10"> |
T'as pensé a Google?
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.
Marsh Posté le 31-07-2009 à 17:34:53
seb06bes a écrit : Merci je vais essayé ca. |
Tu fais pas du XML là tu fais du XSL
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
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
Marsh Posté le 03-08-2009 à 10:20:37
première réponse:
Code :
|
t'as du bien chercher.
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">
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.
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.
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
Marsh Posté le 03-08-2009 à 10:57:34
quand je dis relis mon post, c'est parce que c'est un "<" 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.
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 ?
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...
Marsh Posté le 03-08-2009 à 11:14:46
d'ailleurs visiblement le else n'existe pas: http://www.haypocalc.com/wiki/Prog [...] ion_xsl:if
Marsh Posté le 03-08-2009 à 11:38:34
pataluc a écrit : d'ailleurs visiblement le else n'existe pas: http://www.haypocalc.com/wiki/Prog [...] ion_xsl:if |
Oui et non: pas de if/else en XSLT, mais xsl:choose peut faire le même boulot:
Code :
|
xsl:choose fonctionne comme un switch/case sans fallthrough.
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...
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 :
|
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.
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>
Marsh Posté le 03-08-2009 à 13:07:56
ReplyMarsh 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.
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.
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...
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.
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 |
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
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".
Marsh Posté le 03-08-2009 à 15:29:12
seb06bes a écrit : ok, je comprends. |
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)
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