[XML/XSL]génération d'un XML a partir d'un XML par XSL probleme

génération d'un XML a partir d'un XML par XSL probleme [XML/XSL] - XML/XSL - Programmation

Marsh Posté le 13-01-2004 à 22:02:34    

bonjour,
 
voila j'ai une mini base de donnée en XML, je veut faire une extraction de cette bdd et la stockée dans un autre fichier XML. Puis a ce nouveau fichier appliquer une feuille de style xsl pour faire une belle presentation.
 
Voila l'extraction se passe sans probleme et j'obtient tout bien le XML que je veut sauf que pour pouvoir appliquer la feuille de style de presentation faudrait que dans ce XML il y ai la ligne qui vas bien... et la catastrophe j'arrive pas a l'inserer... je doit pas mettre la ligne au bon endroit, mais [url]quelque soit l'endroit il me la prend pas en compte dans le fichier XML generé, elle disparait.
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="xml" />
  4. <!-- Parametre suivant lesquels on vas effectuer la recherche -->
  5. <xsl:param name='nomRecherche' select="'E'" />
  6. <xsl:template match="/">
  7.  <!-- Feuille de style a apppliquer sur le futur document XML -->
  8.  <!-- <?xml-stylesheet href="presentation_html.xsl" type="text/xsl"?> -->
  9.  <listeReponse>
  10.   <!-- Recherche suivant le nom -->
  11.    <xsl:for-each select="/base/repertoire/fiche[./@nom=$nomRecherche]">
  12.    <xsl:call-template name="sortieFiche"/>
  13.   </xsl:for-each>
  14.  </listeReponse>
  15. </xsl:template>
  16. <xsl:template name="sortieFiche">
  17.  <reponse>
  18.   <fiche nom="{./@nom}" />
  19.  </reponse>
  20. </xsl:template>
  21. </xsl:stylesheet>


 
voila un bout du fichier, si quelqu'un peut m'aider.
 
MErci bcp


---------------
Des images
Reply

Marsh Posté le 13-01-2004 à 22:02:34   

Reply

Marsh Posté le 13-01-2004 à 22:17:01    

En principe ceci doit faire l'affaire:
 

Code :
  1. <xsl:processing-instruction name="xml-stylesheet">
  2. <xsl:text>href="presentation_html.xsl" type="text/xsl"</xsl:text>
  3. </xsl:processing-instruction>


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-01-2004 à 22:50:58    

j'avais bien penser au xsl:text mais ça voulais pas tout seul... alors la si ça marche je te fait tt plein de bisous...  
 
merci bcp


---------------
Des images
Reply

Marsh Posté le 13-01-2004 à 22:59:43    

bon ça me met une super erreur... donc je doit pas le mettre au bon endroit  
 
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: xsl:processing-instruction n'est pas admis à cet endroit de la feuille de style


---------------
Des images
Reply

Marsh Posté le 14-01-2004 à 00:34:37    

Si tu le met apres le  

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2.   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.   <xsl:output method="xml" />


ca marche pas??
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-01-2004 à 08:12:24    

ben non... je comprend pas... ça me met toujours comme erreur :
xsl: processing-instruction n'est pas admis à cet endroit de la feuille de style !
 
je pense que je vais chercher a contourner en faisant ecrire la ligne par la servlet qui rentre les parametre de recherche, en mettant un parametre dans le XSL et en mettant sa valeur a jour par la servlet... mais bon, c'est casse pieds de pas reussir a faire ce qu'on veut...
 
si jamais tu as une illumination sur pourquoi ça veut pas marcher tant mieux pour moi ;), sinon c'est pas grave.
 
Merci quand meme :)


Message édité par titounne le 14-01-2004 à 08:12:41

---------------
Des images
Reply

Marsh Posté le 14-01-2004 à 10:19:09    

Faudrait que j'en sache plus sur ce que tu generes.
Est ce la transfo XML->XML avec ta feuille de style XSL qui genere l'erreur ou est le chargement du fichier XML resultant?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-01-2004 à 17:02:54    

je pense que c'est la génération qui pose problème car si je ne mets pas ces trois lignes tout marche comme il faut : le fichier xml est bien génré mais sans feuille de style... snif !

Reply

Marsh Posté le 14-01-2004 à 21:48:44    

J'ai regarde un peu plus avant.
 
Typiquement, un code comme ceci:
 

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="xml"/>
  4. <xsl:template match="/">
  5.        <xsl:processing-instruction name="xml-stylesheet">
  6.                       <xsl:text>href="presentation_html.xsl" type="text/xml"</xsl:text>
  7.        </xsl:processing-instruction>
  8.        <xsl:apply-templates/>
  9. </xsl:template>
  10. <xsl:template match="@*|node()">
  11.        <xsl:copy>
  12.        <xsl:apply-templates select="@*|node()"/>
  13.        </xsl:copy>
  14. </xsl:template>
  15. </xsl:stylesheet>


Est correct, et passe OK. C'est un exemple de base qui fait ce que tu cherches [le 2e template est la juste pour faire une recopie sans transformation en sortie... C'est le premier qui a l'effet que tu recherches.]. S'il y a un pb, c'est ailleurs ou c'est un bug d'un des outils de ta chaine de transformation.
 
En testant cela, je me suis rendu compte que le niveau de support de XSLT a regresse entre IE5 et IE6 car j'ai teste ceci:
 

Code :
  1. ================ test.xml =======================================
  2. <?xml version="1.0"?>
  3. <?xml-stylesheet href="test.xsl" type="text/xml" ?>
  4. <Titoune alias="chipie">
  5.   <Title>La Chipie qui faisait du XML</Title>
  6.   <p> XSL l'a tuer.</p>
  7. </Titoune>
  8. ================ test.xsl =======================================
  9. <?xml version="1.0"?>
  10. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  11. <xsl:output method="xml"/>
  12. <xsl:template match="/">
  13.        <xsl:processing-instruction name="xml-stylesheet">
  14.                       <xsl:text>type="text/css" href="style.css"</xsl:text>
  15.        </xsl:processing-instruction>
  16.        <xsl:apply-templates/>
  17. </xsl:template>
  18. <xsl:template match="@*|node()">
  19.        <xsl:copy>
  20.        <xsl:apply-templates select="@*|node()"/>
  21.        </xsl:copy>
  22. </xsl:template>
  23. </xsl:stylesheet>
  24. ================ style.css =======================================
  25. Title {
  26. font-weight: bold;
  27. color: rgb(0,0,255);
  28. }
  29. ==================================================================


 
Code qui marche sous Mozilla et Firebird et a marché sous IE5 il me semble, mais ne marche plus sous IE6... :sarcastic:  
 
Vais finir par abandonner definitivement IE et passer a Firebird, je sens...
A+,


Message édité par gilou le 14-01-2004 à 21:56:09

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-01-2004 à 22:04:10    

oki, merci je regarde ça ce soir et je te tient au courant... de toute façon vas bien falloir que je trouve une soluce a ce probleme..
 
La Chipie qui faisait du XML XSL l'a tuer. trop lol... j'adore :)


---------------
Des images
Reply

Marsh Posté le 14-01-2004 à 22:04:10   

Reply

Marsh Posté le 14-01-2004 à 23:39:07    

bon ben le premier exemple marche (mais la feuille de style ne s'execute pas... autre probleme ça pas eu trop le temps de regarder, j'ai du faire une erreur dans la feuille XSL) par contre quand je met mes templates, la ça marche plus (mais je croit que la ça vient de la servlet...)
XS
et le deusieme, ben ça s'affiche le XML sans appliquer la XSL...
 
ça vient peut etre de IE. Le probleme c'est que ça doit tourner sous IE 6 ce truc.
 
Bon... faut encore que je creuse...


---------------
Des images
Reply

Marsh Posté le 15-01-2004 à 11:22:56    

C'est ce que je te disais. Ca marchait dans IE autrefois ce truc, mais on dirait qu'ils ont retiré des fonctionalites de IE6...
Ca marche dans les autres browsers que j'ai teste qui savent afficher du XML.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 15-01-2004 à 13:22:58    

En tout cas merci de ton aide...
 
Mais faut vraiment que je lme fasse marché sous IE6, vas falloir que je trouve une feinte.
 
Mais vraiment merci de ton aide.
 
edit: touche tab!!!


Message édité par titounne le 15-01-2004 à 13:23:50
Reply

Marsh Posté le 15-01-2004 à 16:31:51    

par contre j'ai une eptite question...
 
href="presentation_html.xsl type="text/xml"
 
t'es sur que c'est /xml... je pendais que c'etait /xsl..
de plus auand je met le /xsl le ficher recopié d'affiche bien mais la feuille de style ne s'applique pas, alors que quand je met le /xsl le fichier est visiblement bien généré (quand je regarde la source de la page HTML qui s'affiche je voit bien tt ce qu'il faut) par contre j'ai une erreur qui s'affiche  
"la feuille de styme ne conteitn pas d'elements document. La feuille de style est peut etre vide ou ne constitue pas un document xsl correctement constitué."
 
donc bon c'est que la la feuille de style cherche bien a s'affiché (bon ok j'ai une erreur, je vais trouver pourquoi !!!) donc est /xsl ou /xml????


Message édité par titounne le 15-01-2004 à 16:35:52
Reply

Marsh Posté le 15-01-2004 à 22:26:35    

bon ben c'est /xsl... et voila...  
 
Merci bcp bcp bcp pour le temps que tu as pris pour m'aider.


---------------
Des images
Reply

Marsh Posté le 15-01-2004 à 23:52:37    

Normalement le xsl est du xml...  :D et j'ai plein de bouquins ou text/xml est considere comme ce qui est a employer./ Mais il se peut que Microsoft ait decide de faire les choses differement :sarcastic:  
A+,


Message édité par gilou le 16-01-2004 à 00:03:38

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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