[XML/SXL]Probleme d'arborescence

Probleme d'arborescence [XML/SXL] - XML/XSL - Programmation

Marsh Posté le 13-07-2003 à 23:26:18    

bonsoir tlm,
voila, jé fé un fichier xml avec une certaine arborescence, ensuite jé fé le xsl qui va avec et le probleme est que mon navigateur n'affiche que le premier niveau de larborescence c'est à dire qu il affiche uniquement le texte : 'mon super titre' et pas les rubriques.
 
-----------------------------------------------------------
le xml :  
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml:stylesheet type="text/xsl" href="menu.xsl"?>
<document>
<chapitre>
 <titre>mon super titre</titre>
 <liens>
  <rubrique>ma premiere rubrique</rubrique>
  <rubrique>ma deuxieme rubrique</rubrique>
 </liens>
</chapitre>
</document>
 
-------------------------------------------------------------
le xsl :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
 <HTML>
  <BODY background="index/07.JPG" text="white">
  <xsl:for-each select="document/chapitre">
   <div><xsl:value-of select="titre"/></div>
   <xsl:for-each select="document/chapitre/liens">
   <div><xsl:value-of select="rubrique"/></div>
   </xsl:for-each>
  </xsl:for-each>
  </BODY>
 </HTML>
</xsl:template >
</xsl:stylesheet>
---------------------------------------------------
 
je suis sur ke l'erreur est bete et juste devant mon nez mais ca fait un bout de temps ke je cherche alors je fais appel à vos lumières.
Merci.

Reply

Marsh Posté le 13-07-2003 à 23:26:18   

Reply

Marsh Posté le 14-07-2003 à 10:05:28    

Le problème ce situe au niveau du for-each, il n'y a qu'un seul element liens donc tu passe qu'une seule fois dans la boucle.  
 
Essaye ceci:


  <xsl:for-each select="document/chapitre/liens/rubrique">  
  <div><xsl:value-of select="."/></div>  
  </xsl:for-each>  


 
A+


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Marsh Posté le 14-07-2003 à 10:26:32    

cela ne fonctionne pas - chez moi du moins (ie6)
aurais tu une autre solution ?

Reply

Marsh Posté le 14-07-2003 à 11:17:48    

Je vais regarder... mais je vois que tu utilise encore le namespace propriètaire de Microsoft dans la déclaration du stylesheet!!!  
 
Pour obliger ton parser à respecter les normes il te faut ceci:
 


<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">


 
C'est peut-être une explication...


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Marsh Posté le 14-07-2003 à 11:30:51    

Ta solution :


  <xsl:template match="/">
   <HTML>
    <BODY background="index/07.JPG" text="white">
    <xsl:for-each select="document/chapitre">
     <div><xsl:value-of select="titre"/></div>
     <xsl:for-each select="liens/rubrique">
     <div><xsl:value-of select="."/></div>
     </xsl:for-each>
    </xsl:for-each>
    </BODY>
   </HTML>
  </xsl:template >


N'oublies pas qu'avec for-each tu change de contexte, donc dans le deuxième il ne faut plus repartir de la racine!  
 
Un autre solution qui utilise la structure des données xml comme base de la transformation :  


  <xsl:template match="/">
   <HTML>
    <BODY background="index/07.JPG" text="white">
      <xsl:apply-templates />
    </BODY>
   </HTML>
  </xsl:template >
 
  <xsl:template match="titre|rubrique">
     <div><xsl:value-of select="."/></div>
  </xsl:template >


 
A++


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Marsh Posté le 14-07-2003 à 11:53:20    

merci bcp à toi, je n avais pas compris que l'on ne repartait pas a zéro pour l'arborescence, je croyais qu'il fallait réécrire les arborescences completes.
Ca marche top nickel now.
Merci encore.
 
si ce n est pas trop abusé, et vu ke tu connais bien le xml, aurais tu des liens sur des tutoriaux pour faire les liens de type <a href> car je suis completement perdu dans ce que j ai trouvé (xlink ...)
 

Reply

Marsh Posté le 14-07-2003 à 12:01:47    

Laisse tomber xlink pour l'instant c'est pas encore supporté dans les browsers actuels ( désolé si je me trompe :-)!  
 
Génère tes liens hypertext en HTML directement. Pour générer la valeur des attributs en général tu dois utiliser xsl:element et xsl:attribute
 
Sinon pour des tutoriels commence par regarder dans les 'Liens et Sujets utiles' que tu trouveras en haut de la page programmation.
 
Courage!  
 


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Marsh Posté le 14-07-2003 à 12:11:40    

merci beaucoup pour ton aide !

Reply

Marsh Posté le 14-07-2003 à 12:14:48    

mais de rieng!


---------------
A thing of beauty is a joy forever (John Keats)
Reply

Sujets relatifs:

Leave a Replay

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