[XSLT]Différents problèmes

Différents problèmes [XSLT] - HTML/CSS - Programmation

Marsh Posté le 04-01-2006 à 11:59:10    

Bonjour,
Je m'excuse pour le titre relativement peu explicite du sujet, mais j'ai préféré centraliser mes petits problèmes en 1 seul topic, plutot que d'en créer 3 ou 4 .
 
Je suis entrain de faire un site en m'efforçant de le faire entièrement avec les XSLT pour arriver à maitriser enfin cet outils, et je suis tombé sur les problèmes/questions suivantes.
 
Mes scripts :
 
main,xsl  

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0"
  3.                     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4.                     xmlns="http://www.w3.org/TR/xhtml1/strict">
  5. <xsl:output method="html" media-type="text/html; charset=UTF-8" encoding="UTF-8" ident="yes"/>
  6. <xsl:template match="/">
  7. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  8. <head>
  9. <title> Site alternatif de la section EL </title>
  10. <link href='/css/main.css' rel='stylesheet' type='text/css' />
  11. </head>
  12. <body>
  13. <xsl:apply-templates/>
  14. </body>
  15. </html>
  16. </xsl:template>
  17.   <xsl:template match="historique">
  18. <table border="1">
  19.   <xsl:for-each select="message">
  20.   <tr>
  21.    <th><xsl:value-of select="@date"/></th>
  22.    <th><xsl:value-of select="@auteur"/></th>
  23.   </tr>
  24.   <tr>
  25.   <td colspan="2"><xsl:value-of select="."/></td>
  26.   </tr>
  27.   </xsl:for-each>
  28. </table>
  29. </xsl:template>
  30. <xsl:template match="link">
  31. &lt;a class=&quot;<xsl:value-of select="@align"/>&quot; href=&quot;<xsl:value-of select="@href"/>> <xsl:value-of select="current()"/>&lt;/a>
  32. </xsl:template>
  33. <xsl:template match="/message">
  34. &lt;p class=&quot;<xsl:value-of select="@align"/>&quot;>
  35. <xsl:value-of select="current()"/>
  36. &lt;/p>
  37. </xsl:template>
  38. </xsl:stylesheet>


 
main.xml  

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xsl" href="/xsl/main.xsl"?>
  3. <main>
  4. <historique>
  5. <message date='2.3.1002' auteur='X'> Msg1</message>
  6. <message date='2.3.1006' auteur='Y'> Msg2</message>
  7. </historique>
  8. <message date='2.3.1003' auteur='Z'>Msg3</message>
  9. <link href='index.html' align='center'>Lien</link>
  10. </main>


 
Les buts recherchés sont que l'historique soit affichée dans un tableau (ce qui est fait) que les balises message non contenues dans un element historique soient affichés differemment (non effectué) , que les elements link soient transformés en lien
 
J'ai cherché sur plusieurs tutoriaux (laltruiste, w3school, http://www.zvon.org/xxl/XSLTutorial/Output/index.html) ce qui m'a permis d'apprendre deja pas mal de choses, mais ces problèmes restent .
 
Merci d'avance pour vos lumières
 
Esox


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2006 à 11:59:10   

Reply

Marsh Posté le 04-01-2006 à 12:25:51    

Elle est pas très belle ta xsl :o
La création des balises a et p est ... surprenante
 
tiens je l'ai un peu refaite:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">
  3. <xsl:output method="html" media-type="text/html; charset=UTF-8" encoding="UTF-8" ident="yes"/>
  4. <xsl:template match="/">
  5.   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  6.   <head>
  7.     <title> Site alternatif de la section EL </title>
  8.     <link href='/css/main.css' rel='stylesheet' type='text/css' />
  9.   </head>
  10.   <body>
  11.   <xsl:apply-templates/>
  12.   </body>
  13.   </html>
  14. </xsl:template>
  15. <xsl:template match="historique">
  16.   <table border="1">
  17.     <xsl:for-each select="./message">
  18.     <tr>
  19.       <th><xsl:value-of select="@date"/></th>
  20.       <th><xsl:value-of select="@auteur"/></th>
  21.     </tr>
  22.     <tr>
  23.       <td colspan="2"><xsl:value-of select="."/></td>
  24.     </tr>
  25.     </xsl:for-each>
  26.   </table>
  27. </xsl:template>
  28. <xsl:template match="link">
  29.   <xsl:element name="a">
  30.     <xsl:attribute name="class"><xsl:value-of select="@align"/></xsl:attribute>
  31.     <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
  32.     <xsl:value-of select="current()"/>
  33.   </xsl:element>
  34. </xsl:template>
  35. <xsl:template match="message">
  36.   <xsl:element name="p">
  37.     <xsl:attribute name="class"><xsl:value-of select="@align"/></xsl:attribute>
  38.     <xsl:value-of select="current()"/>
  39.   </xsl:element>
  40. </xsl:template>
  41. </xsl:stylesheet>


 
Maintenant je suis pas sur que ça fasse déjà tout ce que tu veux!

Reply

Marsh Posté le 04-01-2006 à 12:47:26    

C'est exactement ça, merci beaucoup.
 
Parcontre pourquoi est-ce que le template qui march sur message ne match pas les attributs messages dans historique?  
Parcequ'il faudrait inclure un <xsl:apply-templates/> dans le for-each ?
 
En tout cas merci beaucoup !


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2006 à 17:56:46    

Encore quelques details que je ne comprend pas :
 
Dans mon html je me retrouve un :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
qui ne valide biensur pas parcequ'il n'est pas fermé, à quoi c'est du ?  
 
La balise <link> du css est transformée en :  
 
<link href="/css/main.css" rel="stylesheet" type="text/css"></link>
au lieu de garder le tag de fermeture integré .
J'ai pensé que c'était a cause du match sur les objets link et donc j'ai fait un <xsl:template match="link[not(@rel)]"> mais ça ne change pas grand chose, où est l'erreur?
 
Merci beaucoup


Message édité par esox_ch le 04-01-2006 à 18:00:32

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2006 à 18:44:07    

Quand il y a une balise unique, pour la fermer, soit tu rajoutes une balise de fermeture, soit tu rajoutes un "/" avant le ">". C'est les spécification xml qui sont comme ça.

Reply

Marsh Posté le 04-01-2006 à 19:51:32    

Merci ça je le sais, ce que je comprend pas c'est pourquoi il me fait une balise de fermeture alors que rien dans :  
<xsl:output method="html" encoding="UTF-8" ident="yes" doctype-public='-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'/>
 
lui demande de bidouiller un truc qui valide pas


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-01-2006 à 09:46:23    

up


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-01-2006 à 15:01:29    

Deplus je viens de remarquer qu'aussi les input se retrouvent en  :
 
<input ...> </input> alors que dans le xsl j'ai bien ecrit <input ... />  
 
Merci d'avance


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-01-2006 à 08:56:28    

up


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-01-2006 à 13:46:56    

up


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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