inserer du texte avec des balises html dans un document xml

inserer du texte avec des balises html dans un document xml - XML/XSL - Programmation

Marsh Posté le 05-03-2005 à 13:51:36    

Bonjour.  
 
Je me suis mis dans l'idée de generer l'interface de mon site en php  avec xml/xsl.
 
Et la je suis un peu ennuyé. j'utilise la librairie domDocument de php et j'aimerais placer ,entre balise, un texte contenant lui meme des balises HTML.
Le probleme vient du faite que j'aimerais que ces balises soit interprétées et non ignorées (si on utilise <!CDATA[]]>, par exemple) j'ai cherché une fonctions me permettant de faire ça et pour le moment j'ai pas trouvé. j'aurais donc besoins de vos lumieres pour m'eclairer un peu. merci.  
 
(j'ai fais une recherche sur le forum et le seule post que j'ai trouvé qui corresponde a mon pb n'as pas eu de reponse
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
)
 
merci d'avance
 

Reply

Marsh Posté le 05-03-2005 à 13:51:36   

Reply

Marsh Posté le 05-03-2005 à 13:59:08    

Et avec des espaces de noms, ça marche ?

Reply

Marsh Posté le 05-03-2005 à 14:12:54    

des namespaces?
 
sinon voila en faite ce que je fais pour le moment :)
 
 

Code :
  1. $newsElement->appendChild($this->createCdataSection($new->texte));


 
je recupere mon texte contenant des balises html ($news->texte)
je creeait une section CDATA et place le texte dedans.
 
j'ai donc

Code :
  1. <news date="2005-02-23">
  2. <![CDATA[Ouverture du site en beta. <img src="images/smileys/clindoeil.gif" alt=";)" />]]>
  3. </news>


seulement voila c'est logique mon texte etant placé en placé en CDATA et bien ma balise IMG n'est pas interprétée. ce que je veux au final moi c'est:

Code :
  1. <news date="2005-02-23">
  2. Ouverture du site en beta. <img src="images/smileys/clindoeil.gif" alt=";)" />
  3. </news>


 
c'est clair comme ça?
 
 
merci :)
 

Reply

Marsh Posté le 05-03-2005 à 17:37:19    

J'ai reussi. mais alors c'est peu etre pas un symbole d'optimisation
 
j'ai fait une function:

Code :
  1. private function insertTexte($nombalise,$texte){
  2.   $dom = new DOMDocument('1.0', 'iso-8859-1');
  3.   $dom->loadXML("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><$nombalise>$texte</$nombalise>" );
  4.   $items = $dom->getElementsByTagName($nombalise);
  5.   $dom = $this->importNode($items->item(0),true);
  6.   return $dom;
  7. }


 
je place en paramettre le nom de la balise et le texte contenant des balises
je le charge dans un document xml et je renvoie le noeud creer.
 
un peu tordu. si quelqu'un a des idée pour ammélioré ça je suis preneur :)
 
 
 

Reply

Marsh Posté le 06-03-2005 à 12:28:09    

Avec les espaces de noms, ça aurait donné un truc du genre :

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE pouet SYSTEM "ta-dtd.dtd">
  3. <pouet xmlns:xhtml="http://www.w3.org/1999/xhtml">
  4.   <news date="2005-02-23">
  5.     Ouverture du site en beta. <xhtml:img src="images/smileys/clindoeil.gif" alt=";)"
  6.   </news>
  7. </pouet>


Comme ça tu peux importer des éléments provenant d'ailleurs. Mais il faut que la DTD inclus ET tes éléments, ET la DTD xhtml :)

Reply

Marsh Posté le 06-03-2005 à 12:48:05    

Sympa les namespaces, mais la en faite ça n'aurais pas resolu mon probleme.  
Par contre ça le complete si je veux faire un code bien clean.  
 
merci bien :)

Reply

Marsh Posté le 08-03-2005 à 18:36:36    

Hum une question? comment tu ajoute "xmlns:xhtml="http://www.w3.org/1999/xhtml" a pouet, avec DOM s'il te plait?

Reply

Marsh Posté le 08-03-2005 à 18:40:01    

Je sais pas :D

Reply

Marsh Posté le 08-03-2005 à 18:46:17    

cool

Reply

Marsh Posté le 08-03-2005 à 22:50:30    

c'est un bête attribut, logiquement ...

Reply

Marsh Posté le 08-03-2005 à 22:50:30   

Reply

Marsh Posté le 08-03-2005 à 23:48:37    

ba ouai mais a premiere vu il s'affichais pas dans la balise.  
 
au passage, comment afficher un commentaire de la feuille de style XSL au navigateur: en gros je voudrais ça
 

Code :
  1. ....<head>
  2.  <title>pllune ::: graphisme, photoshop, painter</title>
  3.  <!-- compliance patch for microsoft browsers -->
  4.  <!--[if lt IE 7]>
  5.  <script src="/ie7/ie7-standard.js" type="text/javascript">
  6.  </script>
  7.  <![endif]-->
  8.  <link rel="stylesheet" href="style2.css" />
  9.  <script type="text/javascript" src="js/scroll.js"></script>
  10.  <script type="text/javascript" src="js/fonctions.js"></script>....


 
dans ma page html en sortie. or par defaut XSL supprime les commentaire :D
 
merki

Reply

Marsh Posté le 09-03-2005 à 01:03:02    

t'as qu'à modifier l'affichage par défaut des commentaire de ta xsl :  

<xsl:template match="comment()">
  <xsl:comment><xsl:value-of select="." /></xsl:comment>
 </xsl:template>


Message édité par benou le 09-03-2005 à 01:03:10
Reply

Marsh Posté le 09-03-2005 à 08:52:35    

c'est les xsl:comment que je cherchais :D
 
par contre pas glop  
 

Code :
  1. # [if lt IE 7]>
  2. #         <script src="/ie7/ie7-standard.js" type="text/javascript">
  3. #         </script>
  4. #         <![endif]


 
entre balise il aime pas trop.  
 
tant pis. je mettrais testerais pas le hack IE7. merci

Reply

Marsh Posté le 09-03-2005 à 11:34:28    

Lunatik3 a écrit :

entre balise il aime pas trop.  
tant pis.


j'ai pas bien compris le problème

Reply

Marsh Posté le 09-03-2005 à 12:16:59    

en faite j'ai ça: a mette en commentaire:

Code :
  1. # [if lt IE 7]>
  2.          <script src="/ie7/ie7-standard.js" type="text/javascript">
  3.          </script>
  4.          <![endif]


 
et c'est pas valide avec la syntaxe xhtml. car au final ce qui doit etre placé c'est:
 

Code :
  1. # <!--[if lt IE 7]>
  2.          <script src="/ie7/ie7-standard.js" type="text/javascript">
  3.          </script>
  4.          <![endif]-->


 
donc le <![CDATA[]> est pas utilisable :)

Reply

Marsh Posté le 09-03-2005 à 13:22:17    

déprès mes tests, ca ca marche :  

<xsl:template match="comment()">
  <xsl:text disable-output-escaping="yes"><![CDATA[<!--]]></xsl:text><xsl:value-of select="." disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes"><![CDATA[-->]]></xsl:text>
 </xsl:template>

Reply

Marsh Posté le 09-03-2005 à 19:48:15    

alors ça doit surement marcher si le commentaire est dans le fichier xml. Or la j'ai tester mon commentaire ce trouve dans mon fichier XSL. et pas moyen pour le moment de l'afficher.  
 
merci quand meme :)

Reply

Marsh Posté le 09-03-2005 à 20:09:49    

faut comprendre ce que tu veux ... :/
je regarde ...

Reply

Marsh Posté le 09-03-2005 à 20:14:02    

:heink: ca marche très bien avec un CDATA  
 

<xsl:template match="BBB">
   <xsl:text disable-output-escaping="yes"><![CDATA[<!--[if lt IE 7]>  
         <script src="/ie7/ie7-standard.js" type="text/javascript">  
         </script>  
         <![endif]-->]]></xsl:text>
 </xsl:template>


Message édité par benou le 09-03-2005 à 20:15:13
Reply

Marsh Posté le 10-03-2005 à 13:40:49    

:) et a la sortie j'ai ça:
 

Code :
  1. & lt;script src="/ie7/ie7-standard.js" type="text/javascript"& gt; 
  2.          & lt;/script&gt; 
  3.          & lt;![endif]--& gt;


 
 
bref c'est pas grave. laisse tombé. merci de ton aide. c'est sympa :) mais j'ai laissé tombé ça. je me dis que ça en vaux pas la peine pour le moment.  
 
merci beaucoup quand meme :)  

Reply

Marsh Posté le 10-03-2005 à 16:21:54    

moi avec cette XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
   
 <xsl:template match="/">
   <xsl:text disable-output-escaping="yes"><![CDATA[<!--[if lt IE 7]>  
         <script src="/ie7/ie7-standard.js" type="text/javascript">  
         </script>  
         <![endif]-->]]></xsl:text>
 </xsl:template>
 
</xsl:stylesheet>


 
j'ai ca :

<?xml version="1.0" encoding="UTF-8"?><!--[if lt IE 7]>  
         <script src="/ie7/ie7-standard.js" type="text/javascript">  
         </script>  
         <![endif]-->

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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