[XSLT] comment faire if a<b avec ce language de merde ?

comment faire if a<b avec ce language de merde ? [XSLT] - Programmation

Marsh Posté le 15-06-2001 à 11:22:37    

Excusez-moi pour ce titre mais je suis remonté là.
 
ça fait 3 heures que je me tape tous les tutos dispos, dans toutes les langues possibles et imaginables, et y'a rien concernant les tests. Tous les exemples données font des tests sur des égalités ou sur des count d'éléments, j'm'en fous des = j'veux faire des vrais tests.
 
voici ce que j'ai fait :  
 
un test qui marche :  
 
<xsl:if test="@val='0'">
 <xsl:attribute name="bgcolor">red</xsl:attribute>
</xsl:if>
 
et un test qui ne marche pas :  
 
<xsl:if test="@val=<'0'">
 <xsl:attribute name="bgcolor">red</xsl:attribute>
</xsl:if>
 
evidemment le problème viens du <, mais par quoi faut-il le rmeplcer, mystère...
 
si au passage quelq'un conaissait un tuto digne de ce nom ça m'arrangerait :D

Reply

Marsh Posté le 15-06-2001 à 11:22:37   

Reply

Marsh Posté le 15-06-2001 à 11:42:26    

j'ai trouvé ca:
(ici: http://www.ibiblio.org/xml/books/b [...] s/14.html)
 
Booleans are also produced as the result of expressions involving these operators:
 
= equal to  
!= not equal to  
< less-than (really < )  
> greater-than  
<= less-than or equal to (really <=)  
>= greater-than or equal to  
 
j'ai pas testé, si ca marche, fais moi le savoir :)

 

[edit]--Message édité par prettysmile--[/edit]

Reply

Marsh Posté le 15-06-2001 à 11:46:36    

404 FILE NOT FOUND
 pour l'url :sweat:
 
sinon pour les signes, je les connais merci :D, mais ça ne marche pas

Reply

Marsh Posté le 15-06-2001 à 12:01:07    

Fallait enlever la ) à la fin de l'URL !!!
 
Dans cette page on trouve :
Caution
 
The < sign is illegal in attribute values. Consequently, it must be replaced by < even when used as the less-than operator

Reply

Marsh Posté le 15-06-2001 à 12:01:40    

pour l'adresse essaie en passant par là (c la même chose)
 
 http://metalab.unc.edu/xml/books/bible/updates/14.html  
pour les signes: désolée ils ont été interprétés: je sais pas comment empecher cela, alors je balance des espaces)
= equal to  
!= not equal to  
< less-than (really & l t ; )  
> greater-than  
<= less-than or equal to (really  & l t ; = )  
>= greater-than or equal to  
Caution

Reply

Marsh Posté le 15-06-2001 à 12:08:34    

ah ok, merci :D

Reply

Marsh Posté le 15-06-2001 à 21:56:13    

prettysmile> Il faut utiliser une entité supplémentaire pour pouvoir afficher une entité. Exemple : &#38;lt; pour pourvoir afficher &lt;.
 
La vie est simple... :D

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 15-06-2001 à 22:13:16    

tu peux aussi utiliser les templates pour faire des tests, et utiliser '<' sans avoir à taper '<'.
 
je vais recopier un exemple qui vient de je ne sais plus où ...
 
tu as une liste de bouquins que tu veux afficher dans une table, et tu veux une couleur différente pour la colonne du prix si le prix du livre est supérieur à 30.
 
sachant qu'un livre est décrit dans cet exemple par  
 
<book>
 <title>Le titre du livre</title>
 <price>son prix</price>
</book>
 
(bouquins sont rangés dans une bibliothèque genre
<library>
  <book ...
  <book ...
</library> )
 
dans ton xsl tu as :
 
<xsl:template match="/">
 <table>
   <xsl:apply-templates />
 </table>
</xsl:template>
 
<!-- template par défaut pour le tag "book" -->
<xsl:template match="book">
 <tr>
   <td><xsl:value-of select="title" /></td>
   <td><xsl:value-of select="price" /></td>
 </tr>
</xsl:template>
 
<!-- template qui override la template "book" si le prix du livre est supérieur à 30 -->
<xsl:template match="book[price > 30]">
 <tr>
   <td><xsl:value-of select="title" /></td>
   <td bgcolor="ff0000"><xsl:value-of select="price" /></td>
 </tr>
</xsl:template>
 
on peut faire une autre template genre "book[price > 50]" qui override les deux précédentes, et ainsi de suite ...
 
voilà. c'est très puissant et très sympa tout ça, un peu cryptique au début, mais on s'y fait vite !

Reply

Marsh Posté le 15-06-2001 à 22:20:21    

y'a plein de tutorials sur http://zvon.org/
 
xml, xsl, xpath.

Reply

Marsh Posté le 15-06-2001 à 22:38:17    

[off topic ...]
 
duch > dis moi, ta boîte n'est elle pas apparue dans un numéro de shift ? (shift.jp.org)

Reply

Marsh Posté le 15-06-2001 à 22:38:17   

Reply

Marsh Posté le 18-06-2001 à 08:17:02    

DUCH >  :lol:  
 
En XML il y a quoi 5 entités prédéfinis ... c pas dur à apprendre par coeur ... M'enfin ... Surtout qu'il est evident que pour des problemes de parsage < ne peut pas etre à l'interieur d'un attribut sauf bien sur dans le cas evoque par youdontcare qui est à l'interieur d'un XPATH car alors le parseur s'attend à ce charactere ] avant celui ci < ou celui ci > ... Mais c de toute maniere plus rigoureux d'utiliser < ou > ...


---------------
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait
Reply

Marsh Posté le 18-06-2001 à 09:21:48    

J'ai du faire la meme chose : mettre la couleur de fond d'une cellule en fonction de la severite d'une erreur se trouvant a l'interieur ... ca donne ca :
 
 <TD WIDTH="80">
  <xsl:attribute name = "bgcolor">
      <xsl:choose>
        <xsl:when test="Sever[. $le$ 3]">#00ff00</xsl:when>
        <xsl:when test="Sever[. $le$ 6]">#ff8000</xsl:when>
        <xsl:otherwise>#ff0000</xsl:otherwise>
      </xsl:choose>
     </xsl:attribute>
 
  <xsl:value-of select="Sever"/>
 </TD>
 
C'est l'equivalent d'un switch en C/C++. Note que pour les comparaisons, j'utilise $le$, $ge$ ou $eq$

Reply

Marsh Posté le 18-06-2001 à 10:48:58    

BifaceMcLeOD> merci pour l'info, mais c un peu compliqué je sais pas si je retiendrais

Reply

Sujets relatifs:

Leave a Replay

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