11499 sujets

JavaScript, DOM et API Web HTML5

Subject: Affichage HTML via (PHP) $dom -> saveHTML() = <br></br> (Non conforme W3C)

Bonjour,

Tout est dans le sujet...

Tout est géré en amont par PHP, XML & XSL/XSLT. A ce niveau tout va bien mais quand je
veux une sortie html en utilisant $dom -> saveHTML(), la sortie me donne une soupe de tags grotesques.

Un tag, par exemple, <br/> sort de cette façon: <br></br>. J'ai cherché mais non trouvé.
J'imagine qu'on peut le faire en implémentant le comportement BR dans un schema (xs) mais
en ce cas, novice en ce domaine, je sèche.

Merci à vous et comme un dessin est toujours mieux qu'un long texte:

Mon objet DOM contient ceci:

<!DOCTYPE ...>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
   <head>
      <title>VIA DOM</title>
   </head>
   <body>
      <br />
   </body>
</html>


Mais j'arrive à ça:

<!DOCTYPE ...>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
   <head>
      <title>SOUPE</title>
   </head>
   <body>
      <br></br>
   </body>
</html>


Bonne journée.
Modifié par FuzzyLine (13 Aug 2013 - 14:01)
C'est pas super clair cette histoire, d'autant que le titre de ton post est tronqué, donc tout est dans le titre, bon... :-p

Si j'ai bien compris, c'est un problème de génération de HTML via PHP?

Note aussi qu'en fait, <br></br> est plutôt juste si tu demandes une sortie en html. Le <br />, c'est du xhtml donc plus proche de xml. T'as essayé un $dom->saveXML() pour voir ce qu'il te sortait?
salut,
<br> est une balise auto-fermante donc <br></br> sera interprété comme deux retours à la ligne et non comme un <br> classique. En plus la syntaxe sera fausse vu que c'est <br /> et non </br>.
Je ne sais pas trop ce qui pourrait être fait pour ton problème et avec innerHTML ?
sephitan a écrit :

C'est pas super clair cette histoire, d'autant que le titre de ton post est tronqué, donc tout est dans le titre, bon... :-p
Si j'ai bien compris, c'est un problème de génération de HTML via PHP?
Note aussi qu'en fait, &lt;br&gt;&lt;/br&gt; est plutôt juste si tu demandes une sortie en html. Le &lt;br /&gt;, c'est du xhtml donc plus proche de xml. T'as essayé un $dom-&gt;saveXML() pour voir ce qu'il te sortait?

Salut,

Effectivement le sujet est tronqué, désolé,l'ai modifié dans le teste.
Pour ton astuce c'est considéré comme du texte donc, non, ça ne marche.
Déjà essayé mais c'est le contraire qui se passe, quand j'ai un <div></div> il me les
convertit en en </div> autrement dit... mais toute piste étant intéressante je prends...

Zelalsan a écrit :
salut,
&lt;br&gt; est une balise auto-fermante donc &lt;br&gt;&lt;/br&gt; sera interprété comme deux retours à la ligne et non comme un &lt;br&gt; classique. En plus la syntaxe sera fausse vu que c'est &lt;br /&gt; et non &lt;/br&gt;.Je ne sais pas trop ce qui pourrait être fait pour ton problème et avec innerHTML ?

Ok, pas grave. Me reste le parsage par itération mais ca va faire lourd. Non, l'inner est pas implémenté puis c'est pas trop élégant; je trouve.

Merci à vous deux. Proactivité et intérêt: très cool Smiley smile