[E4X] Insérer du HTML dans du XUL (préfixer les tags)

Le
kael
Bonsoir,

En utilisant E4X, je souhaiterais insérer dans du XUL un fragment d'HTML
extrait d'une <entry/> ATOM.

Le problème est que pour être insérés dans du XUL, les tags HTML doivent
être préfixés avec un namespace ; e.g. :

<window id="yourwindow"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<html:p>Foobar</html:p>
</window>


Avec E4X, j'obtiens ceci :


const ns_xul =
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
const ns_html = "http://www.w3.org/1999/xhtml";
const ns_atom = "http://www.w3.org/2005/Atom";

var xul = <window id="yourwindow" xmlns:html={ns_html} xmlns={ns_xul}>
<label value="Put your XUL here!"/>
</window>;

var entry = <entry xmlns={ns_atom}>
<content xml:base="http://example.net/feed" type="html" >
<p>Foobar</p>
</content>
</entry>;

if (entry.ns_atom::content.@type == 'html') {
var p = entry.ns_atom::content.*::*;
p.setNamespace(ns_html);
xul.appendChild(p);
print(xul);
}

> <window id="yourwindow"
> xmlns:html="http://www.w3.org/1999/xhtml"
> xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
> <label value="Put your XUL here!"/>
> <p xmlns:xhtml="http://www.w3.org/1999/xhtml"
> xmlns="http://www.w3.org/1999/xhtml">Foobar</p>
> </window>


Existe-t-il une méthode JavaScript pour préfixer des tags ?

Merci.

--
kael
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mickaël Wolff
Le #18452501
kael a écrit :
Existe-t-il une méthode JavaScript pour préfixer des tags ?



Tu a la méthode createElementNS
permet de créer un nœud dans un namespace spécifique. Je n'en sais pas
plus. Au fait, comment greffes-tu les nœuds du fichier RSS ? Directement
avec insertNode ou l'importes-tu avant avec importNode ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Seeking for a position
kael
Le #18479471
Mickaël Wolff wrote, On 01/22/2009 12:50 AM:
kael a écrit :
Existe-t-il une méthode JavaScript pour préfixer des tags ?



Tu a la méthode createElementNS



Merci pour l'info.

permet de créer un nœud dans un namespace spécifique. Je n'en sais pas
plus. Au fait, comment greffes-tu les nœuds du fichier RSS ? Directement
avec insertNode ou l'importes-tu avant avec importNode ?



Euh, je n'utilise aucunes de ces méthodes. :)

Finalement, j'ai regardé le code d'une extension RSS, et il est en fait
(théoriquement) possible d'insérer du HTML dans du XUL sans préfixer les
tags comme dans cet exemple

--
kael
Jean-Marc Desperrier
Le #18521511
kael wrote:
[...]
Finalement, j'ai regardé le code d'une extension RSS, et il est en fait
(théoriquement) possible d'insérer du HTML dans du XUL sans préfixer les
tags comme dans cet exemple



Moi, j'ai m'impression qu'ils insèrent dans une page HTML dans cet exemple.

Sinon si tu veux que le document soit du xml bien formé et que les
éléments xhtml n'ait pas de suffixe, il suffit de faire de xhtml le
namespace par défaut.

Comme ceci :
<xul:window xul:id="yourwindow"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<p>Foobar</p>
</xul:window>
kael
Le #18621591
Jean-Marc Desperrier wrote, On 01/29/2009 12:12 PM:
kael wrote:
[...]
Finalement, j'ai regardé le code d'une extension RSS, et il est en fait
(théoriquement) possible d'insérer du HTML dans du XUL sans préfixer les
tags comme dans cet exemple



Moi, j'ai m'impression qu'ils insèrent dans une page HTML dans cet exemple.



Oui, effectivement ; je me suis emmêlé les pinceaux entre une extension
qui utilise le même pattern que dans l'exemple ci-dessus (mais qui
insère le contenu d'un feed sous la forme de labels XUL et non en HTML),
et l'insertion "brute de force" de HTML dans le XUL.

Sinon si tu veux que le document soit du xml bien formé et que les
éléments xhtml n'ait pas de suffixe, il suffit de faire de xhtml le
namespace par défaut.

Comme ceci :
<xul:window xul:id="yourwindow"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<p>Foobar</p>
</xul:window>



En fait, pour insérer du HTML dans une extension (et non dans le XUL
comme je le croyais), il existe une technique qui consiste à encoder une
page HTML en une data:URI et à passer cette data:URI comme valeur de
l'attribut 'src' de la balise <xul:browser/>.

cf.
--
kael
Publicité
Poster une réponse
Anonyme