Fixing for IE

Sun 11 June 2006,

I’m proud of my tag cloud but MSIE wouldn’t deal with the JavaScript I’ve wrote for parsing this RDF/XML file.

The DOM way to get elements with a special namespace is the getElementsByTagNameNS(namespace, tagname). IE don’t know what is a namespace and you have to use the simple getElementsByTagName way with the XML notation namespace prefix:tag name. (Some examples bellow)

If it seems to be easier, it’s false in the XML sight. The namespace prefix isn’t absolute and anybody can call it like it want. Only URI are absolute.

Le tag cloud dont je suis assez fier ne fonctionnait pas avec MSIE car le script JavaScript lit un fichier RDF/XML contenant des namespaces (espace de noms) différents. La méthode avec Gecko (le moteur de rendu de Firefox) est celle-ci :

// les <p> d’un document XHTML
document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml','p');

// les <content:encoded> d’un fil RDF/RSS
document.getElementsByTagNameNS('http://purl.org/rss/1.0/modules/content/', 'encoded');

Internet Explorer ne sait pas connait pas les namespaces donc, il faut lui spécifier le nom réel de la balise.

// les <content:encoded> avec IE
document.getElementsByTagNameNS('content:encoded');
        

Cool, c’est vachement plus simple. Et bien non, si c’est plus simple, deux documents peuvent être exactement les mêmes (XML-ment parlant et où les namespace sont définis différemment.

// cet élément XML
<html xmlns="http://www.w3.org/1999/xhtml" />
// est équivalent à celui-ci
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" />
        

NB : il existe également getAttributeNS qui se comporte de la même manière.

Digg it!, so del.icio.us, blogmarks, reddit.