[ XML ] - un truc tout con : le if

- un truc tout con : le if [ XML ] - Programmation

Marsh Posté le 03-09-2001 à 11:57:40    

voila...
ds ma page xml j ai un champs <selection></selection>
qui contient la valeur "checked" quand le radio doit etre selectionné
donc ds ma page xsl j ai mis un :  
 
<xsl:if test="/selection=checked">
  <xsl:attribute name='checked'></xsl:attribute>
</xsl:if>
 
mais ca me fait une erreur et je trouve pas la syntaxe exacte....
sivouplééééééééé aidez moi  :cry:

Reply

Marsh Posté le 03-09-2001 à 11:57:40   

Reply

Marsh Posté le 03-09-2001 à 12:04:04    

Ben déja donne du détail et fais peter ton code
Ton xsl:attribute tout seul c'est louche
De plus selection c'est le root de ton document ?

Reply

Marsh Posté le 03-09-2001 à 12:08:34    

Donne au moins ton tag 'template' en entier!

Reply

Marsh Posté le 03-09-2001 à 12:11:55    

okay
 
la page xsl en entier
 
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
 
<html>
<head>
</head>
<body>
<form>
<xsl:for-each select="Options/categ">
 <xsl:value-of select="titrecat"/><br/>
 <xsl:for-each select="allotements">
  <input type="radio"><xsl:attribute name="name"><xsl:value-of select="value/name"/></xsl:attribute><xsl:attribute name="name"><xsl:value-of select="value/name"/></xsl:attribute>
  <xsl:if test="/selection.=checked">
   <xsl:attribute name='checked'></xsl:attribute>
  </xsl:if>
  </input>-
  -<xsl:value-of select="libelle"/> - <xsl:value-of select="selection"/><br/>
 </xsl:for-each>
</xsl:for-each>
 
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
 
 
et la page xml vs l avbez la :  
 
http://www.afreto.com/test/xmlmote [...] ntvacances
 
vs clikez chercher, vs selectionnez un pack, une date et "j y vais"
et vs etes sur la page xml en question
 
edit : m'en fou du contenu du <xsl:if..></xsl:if> pour l'instant, le principal C que j'arrive pas a faire le test...
et y me semble que le
<xsl:attribute name='checked'></xsl:attribute>
marche
merci :)

 

[edtdd]--Message édité par zul--[/edtdd]

Reply

Marsh Posté le 03-09-2001 à 12:16:22    

bon deja mets ça a la fin (avant la fermeture de ta stylesheet)
 
<xsl:template match="@*|comment()|processing-instruction()|text()"/>

Reply

Marsh Posté le 03-09-2001 à 12:24:02    

therier a écrit a écrit :

bon deja mets ça a la fin (avant la fermeture de ta stylesheet)
 
<xsl:template match="@*|comment()|processing-instruction()|text()"/>  




 
okay j'ai rajouté...
mais ca ne résout pas mon pbleme
j'ai un tag qui contient une valeur
et je veux faire un test sur cette valeur si elle est egale a "checked" ou pas... :(

Reply

Marsh Posté le 03-09-2001 à 12:24:50    

Moi mes XSL je les fais 'en recursif' ie:
 
<!-- root of document, builds the HTML -->
<xsl:template match="/">
 <xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:pro
cessing-instruction>
 <html>
  <head>  
  </head>
  <body>
   <table cellpadding="5" cellspacing="5">
    <xsl:apply-templates/>
   </table>
  </body>
 </html>
</xsl:template>
 
 
et en fait je cree un template par attribut:
 
<xsl:template match="value">
 <xsl:choose>
  <!-- string input type-->
  <xsl:when test="@type='string'">
    <font size="+2">
    <xsl:if test="normalize-space(.)=''">
     <xsl:attribute ntemplatchtame="color">red</xsl:attribute>
     no values
    </xsl:if>
    <xsl:value-of select="normalize-space(.)"/>
    </font>
  </xsl:when>
 
 
Dans le template sur l'element value, j'ai la visibilité sur les elements et attributs de value.

Reply

Marsh Posté le 03-09-2001 à 12:27:02    

therier a écrit a écrit :

     <xsl:attribute ntemplatchtame="color">red</xsl:attribute>
     no values
    </xsl:if>
   



 
oups! mauvais copié/collé!
 
il fallait lire: <xsl:attribute name="color">red</xsl:attribute>
 
 
ouala...

Reply

Marsh Posté le 03-09-2001 à 12:31:23    

therier a écrit a écrit :

 
 
oups! mauvais copié/collé!
 
il fallait lire: <xsl:attribute name="color">red</xsl:attribute>
 
 
ouala...  




 
euh j'avoue ne pas voir plus le bout d'une solution qu'auparavent...
comment tester la valeur contenue ds un tag ?????????
if test="/selection='checked'" marche pas
sniif
 
edit : j'ai ca comme erreur :  
Le jeton attendu 'eof', trouvé '='. /selection-->=<--'checked'

 

[edtdd]--Message édité par zul--[/edtdd]

Reply

Marsh Posté le 03-09-2001 à 12:36:55    

<xsl:if test="selection[text()='checked']">
 
 
Ca marchera mieux (si ton selection est sur le root car match="/" )
 
De plus je ne vois pas de tag selection dans ton code XML
à l'adresse donnée

Reply

Marsh Posté le 03-09-2001 à 12:36:55   

Reply

Marsh Posté le 03-09-2001 à 12:39:04    

Tu ne dois pas tester la valeur contenu dans un tag mais definir les actions qd tu rencontre ce tag (le XSL est une sorte de pattern matching). Tu definis l'apparence de chaque tag rencontré. A toi de dire ce que tu fais si tu rencontre un tag checked.

Reply

Marsh Posté le 03-09-2001 à 12:42:38    

gedeon a écrit a écrit :

<xsl:if test="selection[text()='checked']">
 
 
Ca marchera mieux (si ton selection est sur le root car match="/" )
 
De plus je ne vois pas de tag selection dans ton code XML
à l'adresse donnée  




 
meeeeerci ca tourne nikel :)

Reply

Marsh Posté le 03-09-2001 à 15:23:51    

tient je me pose une question la dessus...
 
est ce que ceci fonctionnerait ?
 
<XSL:if selection.length <> "0">
 
suis vraiment pas sur, c est juste une question...donc si qq un a l a reponse. MERCI

Reply

Marsh Posté le 03-09-2001 à 15:31:01    

Non la syntaxe générale est
<xsl:if test="EXP">
</xsl:if>
 
Dans EXP tu met ce que tu veux (pattern , xpath, etc) propre au xml/xsl mais les truc du genre selection.lenght je vois pas ou tu vas les chercher

Reply

Marsh Posté le 03-09-2001 à 15:32:38    

En gros tu veux tester si la chaine est nulle
donc  
<xsl:if test="selection[text()!='']">
...  
</xsl:if>

Reply

Marsh Posté le 03-09-2001 à 15:35:56    

En fait je me basais sur les Objects Model en XML. (DOM)  
 
c est pour cela que je me posais juste la question mais merci pour ta precision Gedeon.
 
je pensais y trouver une similitude...qui sais LOL
 
Phoelis

Reply

Sujets relatifs:

Leave a Replay

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