Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1287 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  feuille de style xsl ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

feuille de style xsl ?

n°1454107
donny3
Posté le 09-10-2006 à 10:56:15  profilanswer
 

salut,
 
je dispose d'un document xml qui se presente ainsi
 

Citation :

<TABLE NOM ="PILOTE" >
<CHAMPS INTITULE ="NOM"/>
<CHAMPS INTITULE ="PRENOM"/>
<CHAMPS INTITULE ="VILLE"/>
<CHAMPS INTITULE ="AGE"/>
....
</TABLE>
<TABLE NOM ="VOL" >
....  


 
 
 
ce que je souhaiterais serai un doc html qui m'affiche cela
 
 

Citation :

PILOTE
NOM
PRENOM
VILLE
AGE
 
VOL
...  


 
 
donc j'ai fait une feuille xsl
 
 

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. xmlns="http://www.w3.org/TR/REC-html40"
  5. result-ns="">
  6. <xsl:template match="/">
  7.  <HTML>
  8.  <HEAD>
  9.    <TITLE>Tables</TITLE>
  10.  </HEAD>
  11.  <BODY BGCOLOR="#FFFFFF">
  12.  <xsl:apply-templates/>
  13.  </BODY>
  14.  </HTML>
  15. </xsl:template >
  16. <xsl:template match="TABLE">
  17. <h1>
  18.    <xsl:apply-templates select="@NOM" />
  19.    </h1>
  20. <xsl:template match="CHAMPS">
  21. <h4>
  22.    <xsl:apply-templates select="@NOM" />
  23.    </h4>
  24. </xsl:template >
  25. </xsl:template >
  26. </xsl:stylesheet>


et quand je lance mon code
j'obtiens cette structure HTML :
 
 

Citation :

<HTML><HEAD><TITLE>Tables</TITLE></HEAD><BODY BGCOLOR="#FFFFFF">
 
 
<h1>PILOTE</h1><xsl:template match="CHAMPS"/><h4>PILOTE</h4>
<h1>VOL</h1><xsl:template match="CHAMPS"/><h4>VOL</h4>
</BODY></HTML>  


 
 
au lieu d'avoir
 
 

Citation :

<HTML><HEAD><TITLE>Tables</TITLE></HEAD><BODY BGCOLOR="#FFFFFF">
 
 
<h1>PILOTE</h1>
<h4>NOM</h4>
<h4>PRENOM</h4>
<h4>VILLE</h4>
<h4>AGE</h4>
....
</BODY></HTML>  


 
 
comment ça se fait ??,
 
Merci

mood
Publicité
Posté le 09-10-2006 à 10:56:15  profilanswer
 

n°1454114
avander
Posté le 09-10-2006 à 11:14:21  profilanswer
 

Ca m'étonne que ton parser ne pousse pas de gueulante parce qu'a mon avis nester des xsl:templates... c'est pas top!
 

Code :
  1. <xsl:template match="/">
  2.   ...
  3. </xsl:template>
  4. <xsl:template match="TABLE">
  5.   <h1><xsl:value-of select="@NOM" /></h1>
  6. </xsl:template>
  7. <xsl:template match="CHAMPS">
  8.   <h4><xsl:value-of select="@INTITULE" /></h4>
  9. </xsl:template>


 
Faut diviser pour reigner... surtout en XSL-T!

n°1454119
donny3
Posté le 09-10-2006 à 11:21:46  profilanswer
 

le truc est quand je divise
<xsl:template match="TABLE">  
 

Citation :


<h1>
   <xsl:apply-templates select="@NOM" />  
   </h1>
 
 </xsl:template >
 
<xsl:template match="CHAMPS">  
 
 
<h4>
   <xsl:apply-templates select="@INTITULE" />  
   </h4>
 
 </xsl:template >


 
j'obtien cela seulement

Citation :


<h1>PILOTE</h1>
<h1>VOL</h1>
 
je n'ai pas les champs correspondant

n°1454222
avander
Posté le 09-10-2006 à 12:51:06  profilanswer
 

Sorry, j'avais zappé que les CHAMPS sont imbriqués dans TABLE ( ce qui est logique finalement). Il faut simplement relancer la 'machine à transformations' après le traitement de TABLE, comme ceci:

Code :
  1. ...
  2. <xsl:template match="TABLE">
  3.   <h1><xsl:value-of select="@NOM" /></h1>
  4.   <xsl:apply-templates />
  5. </xsl:template>
  6. ...

n°1454243
donny3
Posté le 09-10-2006 à 13:38:49  profilanswer
 

heu j'ai pas trop saisi
relancer la machine ..??

n°1454275
avander
Posté le 09-10-2006 à 14:11:05  profilanswer
 

il faut un <xsl:apply-templates /> pour relancer la machine...

n°1454284
donny3
Posté le 09-10-2006 à 14:21:31  profilanswer
 

pourtant je la relance bien à chaque fois la machine,
pour la table et pour les champs  
 
 

Code :
  1. <xsl:template match="TABLE">
  2. <h1>
  3.    <xsl:apply-templates select="@NOM" />
  4.    </h1>
  5. </xsl:template >
  6. <xsl:template match="CHAMPS">
  7. <h4>
  8.    <xsl:apply-templates select="@INTITULE" />
  9.    </h4>
  10. </xsl:template >
  11. </xsl:stylesheet>

n°1454438
avander
Posté le 09-10-2006 à 16:04:26  profilanswer
 

Oui, tu la relances c'est sur... mais pourquoi faire?
 
A l'intérieur du template TABLE, le parseur est dans la balise TABLE et tu lui demandes de s'occuper des attributs NOM et rien d'autre, la transformation s'arrête donc...
 
Quand le parseur est dans la balise TABLE il doit juste te donner la valeur de l'attribut NOM et ensuite reprendre le processus de façon générale, pas en se limitant aux attributs NOM...
 
Le méchanisme de transformation n'a pas encore fait TILT chez toi je pense, c'est normal ça demande un peu de recul parce que c'est une approche assez différente de la programmation.
 

n°1454461
donny3
Posté le 09-10-2006 à 16:16:00  profilanswer
 

ok donc en faite fallait que je rajoute
<xsl:apply-templates/> juste apres avoir traité les tables

Code :
  1. <xsl:apply-templates/>
  2. </xsl:template >
  3. <xsl:template match="CHAMPS">
  4. <h4>


 
c'est clair que le mecanisme de transformation est pas evident à comprendre

n°1454695
donny3
Posté le 10-10-2006 à 10:12:48  profilanswer
 

je souhaite afficher les champs dans un tableau
donc j'ai fait cela

Code :
  1. <h1>
  2.    <xsl:apply-templates select="@NOM" />
  3.    </h1>
  4. <xsl:apply-templates/>
  5. </xsl:template >
  6. <table>
  7. <xsl:apply-templates/>
  8. <xsl:template match="CHAMPS">
  9. <tr>
  10.    <td>INTITULE: <xsl:apply-templates select="@INTITULE" /></td>
  11.    <td>TYPE: <xsl:apply-templates select="@TYPE" /></td>
  12.    </tr>
  13. </xsl:template >
  14. </table>
  15. <xsl:apply-templates/>


 
 
je relance bien la machine avec <xsl:apply-templates/> avant et apres ma balise <table> et pourtant àl'affichage je n'ai que les nom des tables et les champs on disparu
PILOTE
 
 
 
VOL
 

mood
Publicité
Posté le 10-10-2006 à 10:12:48  profilanswer
 

n°1454697
donny3
Posté le 10-10-2006 à 10:22:26  profilanswer
 

j'ai trouver ce lien
http://xmlfr.org/documentations/faq/010117-0003
qui est pas mal mais je pense qu'il s'applique dans mon cas car je recupere la valeur des champs dans les attribut des balises et pas entre les balises.
donc je pense que c'est impossible

n°1454851
avander
Posté le 10-10-2006 à 15:06:12  profilanswer
 

Le code que tu poste me donne le tournis...  :pt1cable:  
 
Les lignes 9 et 10 ne riment à rien ils se trouvent entre les templates???????????
 
Le template à la ligne 12 est executé pour chaque balise CHAMP de ton xml, tu dois juste dire ce qu'il faut faire comme transformation! Les balises CHAMP ne contiennent plus d'autres balises donc tes apply-templates ne servent à rien, enfin si: ils t'induisent en erreur. C'est des xsl:value-of que tu dois faire.  
 


<xsl:template match="CHAMPS">
  <tr>
    <td>INTITULE: <xsl:value-of select="@INTITULE" /></td>
    <td>TYPE: <xsl:value-of select="@TYPE" /></td>
  </tr>
</xsl:template >


 
Les lignes 24 et 25 idem, ils se trrouvent entre les templates, c'est quoi se délire???????????
 
Dis-moi le nom de ton parseur pour que je puisse le fuir comme la peste....

n°1454888
donny3
Posté le 10-10-2006 à 15:40:42  profilanswer
 

j'utilise XML::Parser sous perl et il les a bien accepter

n°1454902
avander
Posté le 10-10-2006 à 15:58:25  profilanswer
 

ben il a tord... un stylesheet est un document xml comme un autre et il doit répondre a un schema ou une DTD.  
 
La balise xsl:stylesheet n'est pas sensé avoir une balise fille comme xsl:apply-templates...

n°1454958
donny3
Posté le 10-10-2006 à 16:26:17  profilanswer
 

toute maniere j'ai les boules
je tourne en rond sur google je trouve rien sur XML:: Parser
les cours de bases sur le perl y n'en parle pas

n°1455263
avander
Posté le 11-10-2006 à 10:58:14  profilanswer
 

si tu en disais un peu plus sur ton environnement de travail?  
 
sous Win, le plus simple c'est de travailler avec MSXSL.EXE. Tu lui fournit ton xml et ton xsl en ligne de commande et il te crache la transformation.  
Ton éditeur préféré suffit pour se lancer...

n°1455309
donny3
Posté le 11-10-2006 à 11:25:44  profilanswer
 

le truc est que je dois le faire obligatoirement en perl
je les ai modifier les lignes ça me paraissai aussi bizarre (j'avais vu sa sur un site pour debutant en xslt)donc j'ai mis value-of select;

n°1467888
sebbzh
la richesse te guette
Posté le 31-10-2006 à 00:33:39  profilanswer
 

voici un "petit" exemple de feuille XSL que j'utilise pour generer mon cv en html
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2.   <!--  Fichier XSL servant à la représentation du CV
  3.   -->
  4.   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
  5.   <xsl:output method="html" />
  6.   <xsl:template match="resume">
  7.   <html>
  8.   <head>
  9.   <title>Resume Dauvergne Sébastien</title>
  10.   </head>
  11.   <body>
  12.   <xsl:apply-templates select="identity" />
  13.   <xsl:apply-templates select="qualification" />
  14.   <xsl:apply-templates select="knowledge" />
  15.   <xsl:apply-templates select="professional_experience" />
  16.   <xsl:apply-templates select="foreign_language" />
  17.   <xsl:apply-templates select="extracurricular_activities" />
  18.   <small>
  19.   <xsl:value-of select="update" />
  20.   </small>
  21.   </body>
  22.   </html>
  23.   </xsl:template>
  24.   <!-- identity
  25.   -->
  26.   <xsl:template match="identity">
  27.   <xsl:apply-templates select="name" />
  28.   <xsl:apply-templates select="address" />
  29.   <xsl:apply-templates select="telephone" />
  30.   <xsl:apply-templates select="internet" />
  31.   </xsl:template>
  32.   <xsl:template match="name">
  33.   <p>
  34.   <b>
  35.   <xsl:value-of select="surname" />
  36.   <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
  37.   <xsl:value-of select="firstname" />
  38.   </b>
  39.   </p>
  40.   </xsl:template>
  41.   <xsl:template match="address">
  42.   <p>
  43.   <xsl:value-of select="street" />
  44.   <br />
  45.   <xsl:value-of select="postcode" />
  46.   <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
  47.   <xsl:value-of select="city" />
  48.   <br />
  49.   <xsl:value-of select="country" />
  50.   </p>
  51.   </xsl:template>
  52.   <xsl:template match="telephone">
  53.   <p>
  54.   mobile :
  55.   <xsl:value-of select="mobile" />
  56.   <br />
  57.   home :
  58.   <xsl:value-of select="home" />
  59.   </p>
  60.   </xsl:template>
  61.   <xsl:template match="internet">
  62.   <p>
  63.   email :
  64.   <a href="mailto:dauvergne.sebastien@neuf.fr">
  65.   <xsl:value-of select="email" />
  66.   </a>
  67.   <br />
  68.   <xsl:variable name="site">
  69.   <xsl:value-of select="website" />
  70.   </xsl:variable>
  71.   website :
  72.   <a href="http://dauvergne.sebastien.free.fr">
  73.   <xsl:value-of select="$site" />
  74.   </a>
  75.   </p>
  76.   </xsl:template>
  77.   <!-- qualification
  78.   -->
  79.   <xsl:template match="qualification">
  80.   <h2>Qualification</h2>
  81.   <p>
  82.   <xsl:apply-templates select="degree" />
  83.   </p>
  84.   </xsl:template>
  85.   <xsl:template match="degree">
  86.   <xsl:value-of select="date" />
  87.   :
  88.   <xsl:value-of select="title" />
  89.   <br />
  90.   <xsl:value-of select="establishment" />
  91.   <br />
  92.   <br />
  93.   </xsl:template>
  94.   <!-- knowledge
  95.   -->
  96.   <xsl:template match="knowledge">
  97.   <h2>Computer Knowledge</h2>
  98.   <p>
  99.   <xsl:apply-templates select="skill" />
  100.   </p>
  101.   </xsl:template>
  102.   <xsl:template match="skill">
  103.   <xsl:value-of select="subject" />
  104.   :
  105.   <xsl:value-of select="description" />
  106.   <br />
  107.   <br />
  108.   </xsl:template>
  109.   <!-- professional_experience
  110.   -->
  111.   <xsl:template match="professional_experience">
  112.   <h2>Professional Experience</h2>
  113.   <p>
  114.   <xsl:apply-templates select="job" />
  115.   </p>
  116.   </xsl:template>
  117.   <xsl:template match="job">
  118.   <xsl:value-of select="date" />
  119.   :
  120.   <xsl:value-of select="employer" />
  121.   <br />
  122.   <xsl:value-of select="description" />
  123.   <xsl:if test="subject">
  124.   <!--  s'il le job possede un sujet alors c'est un stage
  125.   -->
  126.   <br />
  127.   subject:
  128.   <xsl:value-of select="subject" />
  129.   </xsl:if>
  130.   <br />
  131.   <br />
  132.   </xsl:template>
  133.   <!-- foreign_language
  134.   -->
  135.   <xsl:template match="foreign_language">
  136.   <h2>Languages</h2>
  137.   <p>
  138.   <xsl:apply-templates select="language" />
  139.   </p>
  140.   </xsl:template>
  141.   <xsl:template match="language">
  142.   <xsl:value-of select="name" />
  143.   :
  144.   <xsl:value-of select="level" />
  145.   <br />
  146.   <br />
  147.   </xsl:template>
  148.   <!-- extracurricular_activities
  149.   -->
  150.   <xsl:template match="extracurricular_activities">
  151.   <h2>Extracurricular Activities</h2>
  152.   <p>
  153.   <xsl:apply-templates select="category" />
  154.   </p>
  155.   </xsl:template>
  156.   <xsl:template match="category">
  157.   <xsl:value-of select="name" />
  158.   :
  159.   <xsl:apply-templates select="activity" />
  160.   <br />
  161.   <br />
  162.   </xsl:template>
  163.   </xsl:stylesheet>


 
Ce n'est pas un exemple de "toute beauté" mais ca te servira peut etre pour la definition et l'appel des regles.
 
Si tu souhaites voir le resultat : http://dauvergne.sebastien.free.fr
 
Le resultat graphique en lui-même est loin d'être fulgurant mais ce qu'il faut noté c'est la puissance des règles pour aller chercher les données nécessaires dans le document XML.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  feuille de style xsl ?

 

Sujets relatifs
[xslt][PHP][xsltproc]utiliser plusieur feuille de style XSLfeuille de style qui disparait
Feuille de style multipleBesoin d'aide pour feuille de style.css
Comment améliorer ma feuille de style ?feuille de style pour l'impression
Pb d'affichage Firefox - Non prise en charge Feuille de style[Résolu] Correction Feuille de Style CSS Firefox > IE
Titre sous une feuille de stylefeuille de style
Plus de sujets relatifs à : feuille de style xsl ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR