title: Define default namespace (unprefixed) in lxml
body: <p>When rendering XHTML with lxml, everything is fine, unless you happen to use Firefox, which seems unable to deal with namespace-prefixed XHTML elements and javascript. While Opera is able to execute the javascript (this applies to both jQuery and MathJax) fine, no matter whether the XHTML namespace has a prefix (<code>h:</code> in my case) or not, in Firefox the scripts will abort with weird errors (<em><code>this.head</code> is undefined</em> in the case of MathJax).</p>
  
  <p>I know about the <code>register_namespace</code> function, but it does neither accept <code>None</code> nor <code>""</code> as namespace prefix. I've heard about <code>_namespace_map</code> in the <code>lxml.etree</code> module, but my Python complains that this attribute doesn't exist (version issues?)</p>
  
  <p>Is there any other way removing the namespace prefix for the XHTML namespace? Note that <code>str.replace</code>, as suggested in the answer to another, related question, is <em>not</em> a method I could accept, as it is not aware of XML semantics and might easily screw up the resulting document.</p>
  
  <p>As per request, you'll find two examples ready to use. One with <a href="http://sotecware.net/files/persistent/so-lxml-xhtml/js-test-prefixed.xhtml" rel="nofollow">namespace prefixes</a> and <a href="http://sotecware.net/files/persistent/so-lxml-xhtml/js-test.xhtml" rel="nofollow">one without</a>. The first one will display 0 in Firefox (wrong) and the second one will display 1 (correct). Opera will render both correct. This is obviously <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492933" rel="nofollow">a Firefox bug</a>, but this only serves as a rationale for wanting prefixless XHTML with lxml – there are other good reasons as to reduce traffic for mobile clients etc (even <code>h:</code> is quite a lot if you consider tens or hundret of html tags).</p>