Débutant en XSLT : <xsl:if>

Débutant en XSLT : <xsl:if> - XML/XSL - Programmation

Marsh Posté le 23-07-2004 à 09:15:13    

Bonjour, voila je débute en XSLT et je suis déjà confronté à de simples problèmes ! Du moins je pense.
J'ai un fichier .xml avec une balise <PLANETS> ayant ou pas des enfants

Citation :

<PLANET>
Exemple :  
<PLANETS>
<PLANET>
<NAME>Terre</NAME>
</PLANET>
</PLANETS>
...


 
Dans mon fichier xsl ci-dessous je souhaiterai afficher "Planet" ci le nombre de noueud enfant de PLANETS est inférieur à 10.
Mais d'une part, il n'accepte pas que j'utilise le signe inférieur et puis si je change de signe il ne prend pas en compte le if !
Quel est mon problème ?
 

Citation :

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
 
 <HTML>
  <xsl:apply-templates/>
 </HTML>
 
<xsl:template match="PLANETS">
 <xsl:if test="count(PLANET) < 10">
  Planete
 </xsl:if>
</xsl:template>
 
</xsl:stylesheet>


 
J'ai une 2ème question toute bete certainement. Est-on obligé d'avoir ce lien internet dans la 2eme balise du fichier xsl pour que les xslt fonctionne ? Ceci implique t-il qu'il faut etre connecté à internet ? Que posséder iExplorer sans etre connecté ne fonctionnera pas ?
 
Merci d'avance

Reply

Marsh Posté le 23-07-2004 à 09:15:13   

Reply

Marsh Posté le 23-07-2004 à 10:14:57    

tu dois utiliser ça :  
 

Code :
  1. <xsl:if test="count(PLANET) &lt; 10">


 

big_mouth_fish a écrit :


J'ai une 2ème question toute bete certainement. Est-on obligé d'avoir ce lien internet dans la 2eme balise du fichier xsl pour que les xslt fonctionne ? Ceci implique t-il qu'il faut etre connecté à internet ? Que posséder iExplorer sans etre connecté ne fonctionnera pas ?


non tu n'as pas besoin d'être connecté, c'est juste une chaine de caractère qui sert d'espace de nom unique et la convention veut qu'on utilise une URL (et pour faire pro, à l'adresse de l'URL il faut mettre une description de l'espace de nom)

Reply

Marsh Posté le 23-07-2004 à 10:30:49    

Merci pour l'info mais il semble le pb ne soit pas réglé. Si je remplace &lt; par &gt; il m'affiche tout autant le message planete. Cela dit ce n'est pas logique de mettre &lt; ou &gt; car il s'agit d'un condition ! non ?

Reply

Marsh Posté le 23-07-2004 à 11:08:23    

ton code XSL n'est pas valide à cause du bout suivant:
 

Code :
  1. <HTML>
  2.   <xsl:apply-templates/>
  3. </HTML>


 
je l'ai oté pour tester et "count(PLANET) &lt; 10" fonctionne très bien

Reply

Marsh Posté le 23-07-2004 à 11:30:48    

Est-ce que ça te dérangerait de m'envoyer tes fichiers parce que j'ai beau changé pour vérifier tes dires, moi ça marche pas pas !

Reply

Marsh Posté le 23-07-2004 à 11:51:03    

puisque les fichiers ne sont pas très grand je te le mets ici :
XML :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <PLANETS>
  3. <PLANET>
  4. <NAME>Terre</NAME>
  5. </PLANET>
  6. </PLANETS>


 
XSL :

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  2. <xsl:template match="PLANETS">
  3. <xsl:if test="count(PLANET) &lt; 10">
  4.   Planete
  5. </xsl:if>
  6. </xsl:template>
  7. </xsl:stylesheet>


Message édité par mathix le 23-07-2004 à 11:52:23
Reply

Marsh Posté le 23-07-2004 à 13:00:57    

As-tu essayé de remplacer &lt; par &gt; ? Est-ce que ça marche ? Moi pas. Je ne comprends pas.

Reply

Marsh Posté le 23-07-2004 à 13:28:39    

Il semble que mon problème ne vienne pas du if mais du lien vers le site. Je travaille avec IE 5 et le lien est différent ! Faut le savoir ?!

Reply

Marsh Posté le 13-08-2004 à 16:09:20    

Classique!
 
Si ton lien contient 'WD' tu utilise toujours la version propriètaire de Microsoft du moteur de transformations XSLT et tu auras toujours des problèmes pcq. non conforme aux standards.  
 
Il faut installer MSXML 3 voire 4 pour être tranquille, de plus ce dernier est performant, il est fourni avec un petit SDK sympa pour avoir la doc sous la main.  
 

Reply

Marsh Posté le 05-05-2006 à 16:54:54    

moi j'ai testé ça sur XMLSpy et ça marche
 
le code xsl :
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:template match="PLANETS">  
 <xsl:if test="count(PLANET) > 10">  
 Planete : plus grand que dix
 </xsl:if>
 <xsl:if test="not(count(PLANET) > 10)">  
 Planete plus petit petit que dix
 </xsl:if>
 </xsl:template>  
 </xsl:stylesheet>  
 
 
a+

Reply

Sujets relatifs:

Leave a Replay

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