title: How to specify default namespace for <xsl:element ...> productions?
body: <p>I have an XML with unnamed namespace, think like:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
  &lt;?xml-stylesheet type="text/xsl" href="&lt;see below&gt;" ?&gt;
  &lt;root&gt;
      &lt;child&gt;Hello&lt;/child&gt;
  &lt;/root&gt;
  </code></pre>
  
  <p>Which I intend to transform with XSLT to an X(HT)ML tree. Some of the things I would like to get away with are:</p>
  
  <ol>
  <li><p>Do not use the "xsl:" prefix in the transformation stylesheet (below). This is for tersity, although I am keeping in mind that I may be paying for reduction in typing out my XSL code with extra verbosity in typing everything else. Anyhow, I would like to see how it pans out with just using unprefixed XSL syntax.</p></li>
  <li><p>I am outputting HTML as an XHTML (and thus by extension, XML-compliant) tree. Not text and not "HTML text" -- the output method is "xml". This is to save the user agent from having to parse the [HTML] text.</p></li>
  <li><p>I want to use XSL <code>element</code> elements to generate result tree. Not typing out the '&lt;' followed by element name, followed by '>'.</p></li>
  </ol>
  
  <p>Basically, I want to see how I can do a generic XML->XML transformation, where the resulting tree is an XHTML node or document, compatible with HTML 5.</p>
  
  <p>The <em>unfinished</em> XSL stylesheet file in its simplified form:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt;
  &lt;stylesheet xmlns="http://www.w3.org/1999/XSL/Transform"&gt;
      &lt;output method="xml" /&gt;
      &lt;template match="/"&gt;
          &lt;element name="h1"&gt;
              &lt;text&gt;Hello World.&lt;/text&gt;
          &lt;/element&gt;
      &lt;/template&gt;
  &lt;/stylesheet&gt;
  </code></pre>
  
  <p>I intend to have HTML's  <code>html</code> and <code>body</code> elements as ancestors of that <code>h1</code>, and actually transform source node(s). But the example should suffice to illustrate my impending problem -- I want the <code>h1</code> element in the resulting tree to belong to its rightful XHTML namespace. Without an explicit namespace declaration for the <code>element</code> node through the <code>namespace</code> attribute, it seems that the user agent interprets it as an unknown node with name <code>h1</code>. Fair enough, I guess.</p>
  
  <p>What I don't want to do is have <code>namespace="http://www.w3.org/1999/xhtml"</code> added to every instance of <code>element</code> XSL element, of which I may have dozens, obviously. Sadly, this currently looks like my only option. Provided that I use the XSL namespace as default for the stylesheet document, can I somehow imply that the resulting tree elements belong to XHTML namespace by default?</p>
  
  <p>I understand that my perverted corner case may be why most folks use <code>xsl:</code> prefix explicitly, but I want to avoid it, given how the XSL is the namespace of the document after all. But if it is a limitation of XSLT 1.0, then I will concede.</p>
  
  <p>The XML is transformed and rendered by Firefox 48.</p>