XSL:traiter les lignes XML dans l'ordre malgrès du text intercalé

XSL:traiter les lignes XML dans l'ordre malgrès du text intercalé - XML/XSL - Programmation

Marsh Posté le 05-07-2004 à 09:49:23    

voila une partie de ma source xml:
 
<text:p text:style-name="P1">
  <text:span text:style-name="T1">Normal</text:span>
  text intercalé
  <text:span text:style-name="T1"> normal</text:span>
</text:p>
 
je voudrais(une fois avoir matché text:p) traiter les trois lignes intérieur dans l'ordre.
C'est-à-dire faire un apply-templates puis reporter le text puis le deuxième apply-templates.
 
Ceci etant généralisable à plein de balises text:span bien sur.Le text intercalé pouvant se trouver à la première ligne ou entre 2 text:span n'importe lesquelles  
 
si vous pouvez m aider ce serai cool.
merci
ps: ce que j avai fait mais qui n est pas bon c etait:
             <xsl:value-of select="text()"/>
             <xsl:apply-templates select="text:span"/>
puisque il ecrit d abord le text avant de traiter la premiere balise.
 
 
soumetez moi au moins vos idees de résolution car là je suis a court.
ca me permettra peut etre avec plusieur petites idees d aboutir a qqch de bien
merci


Message édité par le_moustiq le 06-07-2004 à 14:31:18
Reply

Marsh Posté le 05-07-2004 à 09:49:23   

Reply

Marsh Posté le 06-07-2004 à 14:27:16    

Est ce que quelqu'un sait comment faire ca, ca repondrai a mon probleme:
Une méthode consisterai a reconnaitre lorsque du text suit une balise fermante de xml, ou alors precede une balise ouvrante de xml.
du coup je ferai deux templates differents.
si qqun sait faire cela en xsl, je suis preneur.
merci
 
 
soumetez moi au moins vos idees de résolution car là je suis a court.
ca me permettra peut etre avec plusieur petites idees d aboutir a qqch de bien
merci


Message édité par le_moustiq le 06-07-2004 à 14:32:35
Reply

Marsh Posté le 06-07-2004 à 17:02:48    

J'ai fait un ptit exemple qui devrais t'aider un peu
 

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <p>
  3. text1
  4. <span>Spanned1</span>
  5. text2
  6. <span>Spanned2</span>
  7. text3
  8. </p>


 
mon stylesheet  

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="html"/>
  4.   <xsl:template match="/">
  5.     <HTML>
  6.       <HEAD/>
  7.       <BODY>
  8.         <xsl:apply-templates/>
  9.       </BODY>
  10.     </HTML>
  11.   </xsl:template>
  12.   <xsl:template match="p">
  13.     <P>
  14.       <xsl:apply-templates/>
  15.     </P>
  16.   </xsl:template>
  17.   <xsl:template match="span">
  18.     <SPAN>
  19.       <xsl:apply-templates/>
  20.     </SPAN>
  21.   </xsl:template>
  22.   <xsl:template match="p/text()">
  23.     <xsl:value-of select="."/>
  24.   </xsl:template>
  25. </xsl:stylesheet>


 
et le résultat

Code :
  1. <HTML>
  2. <HEAD>
  3. <META http-equiv="Content-Type" content="text/html; charset=UTF-16">
  4. </HEAD>
  5. <BODY>
  6. <P>
  7. text1
  8. <SPAN>Spanned1</SPAN>
  9. text2
  10. <SPAN>Spanned2</SPAN>
  11. text3
  12. </P>
  13. </BODY>
  14. </HTML>


 
faut fignoler un peu j'ai pas pris en compte ton namespace text: par exemple, j'ai mis les balises HTML en capitales dans le stylesheet pour que tu vois ce qu'ils s'y passe, pour du xhtml faut mettre en miniscules. J'utilise le parser MSXML 4.  
 
A plus.
 
PS: Fais gaffe il y a un smilie qui persiste à s'incruster dans le code du stylesheet


Message édité par avander le 06-07-2004 à 17:11:03
Reply

Marsh Posté le 07-07-2004 à 09:46:18    

merci énormément, ca marche niquel, il me reste quelque retouche a faire par rapport à ce que je voulais mais c est génial.Je commencais à désespérer.
merci
a plus


Message édité par le_moustiq le 07-07-2004 à 09:46:57
Reply

Marsh Posté le 07-07-2004 à 14:02:46    

une remarque en passant : le XML n'est pas sencé contenir que des données et pas de mise en forme?

Reply

Marsh Posté le 07-07-2004 à 15:49:44    

Qu'est ce que tu veu dire par là par rapport à ce que j'ai demandé?

Reply

Marsh Posté le 08-07-2004 à 11:30:01    

bah dans l'ex de avander, y'a des balises <p>, <span>, etc... C'est de la mise en forme, pas des données.

Reply

Marsh Posté le 08-07-2004 à 11:40:44    

rufo a écrit :

bah dans l'ex de avander, y'a des balises <p>, <span>, etc... C'est de la mise en forme, pas des données.


Non, c'est assez standard.
<p> ca indique un paragraphe de texte, ca fait partie du decoupage logique.
<span> est un support d'attribut et permet de faire porter l'attribut sur un decoupage plus fin que le paragraphe,
Rien de tout ca n'indique de quelle maniere ca doit etre presenté.
A+,


---------------
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