[resolu] Empecher <xyz></xyz> transformé en <xyz/> (xsl)

Empecher <xyz></xyz> transformé en <xyz/> (xsl) [resolu] - XML/XSL - Programmation

Marsh Posté le 19-06-2005 à 00:55:57    

Bonjour
 
J'ai fait un système de template xsl pour mon site, mais j'ai un bug que j'arrive pas à résoudre...
Quand je mets dans un xsl:template un code dans ce genre là
 

Code :
  1. <textarea name="content" id="tcontent" cols="70" rows="20"><xsl:value-of select="content" /></textarea>


 
Et que dans mon fichier xml la balise <content> est vide, le code ci dessus est transformé en :
 

Code :
  1. <textarea name="content" id="tcontent" cols="70" rows="20" />


 
Ce qui occasionne de jolies choses avec la textarea en question :o  
Comment empêcher ça ?
 
Pour info, voilà l'entête de ma feuille de style :
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <xsl:output method="xml" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd;" />


Message édité par Puissance Athlon XP le 19-06-2005 à 16:09:37
Reply

Marsh Posté le 19-06-2005 à 00:55:57   

Reply

Marsh Posté le 19-06-2005 à 01:16:32    

Une XSL crée du XML et les balises vides XML sont automatiquement affichées sous forme réduite [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-06-2005 à 01:23:49    

Et y'a pas une solution pour empecher ça ? :/
EDIT : Actuellement je fous un espace insécable dedans, mais bon... :sleep:


Message édité par Puissance Athlon XP le 19-06-2005 à 01:24:32
Reply

Marsh Posté le 19-06-2005 à 01:27:52    

Ben faut y mettre des données [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-06-2005 à 02:01:00    

Et quand c'est un formulaire pour les entrer ces données ? :D

Reply

Marsh Posté le 19-06-2005 à 13:53:06    

De toute façon, si tu output en XHTML1.1, faut tout faire en XML, ça ne pose aucun problème. Sachant qu'IE ne gère pas le 1.1, ni FireFox sans l'extension qui gère le module Ruby, etc [:spamafote]

Reply

Marsh Posté le 19-06-2005 à 13:58:41    

FlorentG a écrit :

De toute façon, si tu output en XHTML1.1,


Le problème est le même en XHTML 1.0...

Reply

Marsh Posté le 19-06-2005 à 14:08:56    

Bon donc en gros j'en conclus qu'il n'y a aucune solution
Du coup ben je vais mettre la methode en html, mais j'aurais un code qui ne sera pas valide [:spamafote]

Reply

Marsh Posté le 19-06-2005 à 14:25:29    

busOman a écrit :

Le problème est le même en XHTML 1.0...


Non, bien que la chose ne soit pas recommandée on peut transmettre du XHTML1.0 comme text/html [:aloy]  
 
Chose qu'on ne doit pas faire avec le XHTML1.1 [:aloy]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-06-2005 à 14:32:21    

Avec l'extension DOMXML de PHP4, il met bien <textarea></textarea> Si c'est vide...Pas besoin de faire quoi que ce soit :(

Reply

Marsh Posté le 19-06-2005 à 14:32:21   

Reply

Marsh Posté le 19-06-2005 à 15:06:50    

Bon, du coup en cherchant dans la doc pour le nom de l'extension que j'utilise (XSL sur php5) j'ai eu une idée et j'ai essayé d'utiliser DOM au lieu de XSL pour une partie
 
Avant je faisais la transformation de l'objet DOM vers un fichier XML directement avec l'extension XSL
Maintenant je fais la transformation de l'objet DOM vers un autre objet DOM avec l'extension XSL, que je sors ensuite en HTML avec la méthode saveHTML... (vous suivez ?)
 

Code :
  1. $xsl = new XSLTProcessor();
  2.         $xsl->importStyleSheet(DOMDocument::load($xslfile));       
  3.         $doc = $xsl->transformToDOC(DOMDocument::loadXML($xml));
  4.         $this->str = $doc->saveXML();


 
Et ça marche :)
Merci de votre aide

Reply

Marsh Posté le 19-06-2005 à 15:18:19    

Sinon, j'ai un problème avec la validation du site, et je vois pas trop ce qu'il faudrait que je fasse
http://validator.w3.org/check?uri= [...] &verbose=1
 
Vous pouvez ptet m'aider, au lieu de créer un nouveau topic

Reply

Marsh Posté le 19-06-2005 à 15:20:44    

Puissance Athlon XP a écrit :

Sinon, j'ai un problème avec la validation du site, et je vois pas trop ce qu'il faudrait que je fasse
http://validator.w3.org/check?uri= [...] &verbose=1
 
Vous pouvez ptet m'aider, au lieu de créer un nouveau topic


C'est comme le port-salut, c'est marqué dessus, suffit de lire les messages [:petrus75]
 
On peut pas mettre un formulaire ou un header dans un paragraphe [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-06-2005 à 15:20:56    

Pour l'erreur 2 par exemple, t'as un <h2> dans un <p>. Regarde dans la recommandation :

Citation :

<!ELEMENT P - O (%inline;)*            -- paragraph -->


Citation :

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">


Le premier truc indique que <p> accepte du contenu inline. Le deuxième indique que <h2> est de type heading. Sachant que heading ne fait pas partie de inline, t'as pas le droit de mettre un h2 dans un p ;)

Reply

Marsh Posté le 19-06-2005 à 15:26:59    

masklinn a écrit :

C'est comme le port-salut, c'est marqué dessus, suffit de lire les messages [:petrus75]
 
On peut pas mettre un formulaire ou un header dans un paragraphe [:spamafote]


 
Ben personellement le "missing one of "object", "ins", "del", "map" start-tag" ca m'eclairait pas beaucoup, et pour moi p, form et h2 etaient des blocks, alors le "block-level inside an inline-level" m'eclairait pas beaucoup plus [:itm]
 
 
EDIT : Merci FlorentG pour ton explication  :hello:


Message édité par Puissance Athlon XP le 19-06-2005 à 15:27:26
Reply

Sujets relatifs:

Leave a Replay

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