title: What is the difference between exclude-result-prefixes and extension-element-prefix in XSLT namespace declaration?
body: <p>What's the difference between <code>exclude-result-prefixes</code> and <code>extension-element-prefix</code>? Both are used in the header of XSLTs. I've found <code>extension-element-prefix</code> while using EXSLT and the <a href="http://www.exslt.org/howto.html#namespaces" rel="noreferrer">EXSLT website Howto</a> says that <code>extension-element-prefix</code> is used for  "prevent the extension namespaces from being output in the result tree".  </p>
  
  <p><strong>But</strong> this is not true (using libxslt). Only <code>exclude-result-prefixes</code> removes the extension namespace. So why do I need <code>extension-element-prefix</code> ???</p>
  
  <p>Sample:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:exsl="http://exslt.org/common" version="1.0"
    extension-element-prefix="exsl"&gt;
  
  &lt;xsl:template match="/"&gt;
    &lt;blabla/&gt;
  &lt;/xsl:template&gt;
  
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>My output with libxslt (xsltproc):</p>
  
  <pre><code>&lt;?xml version="1.0"?&gt;
  &lt;blabla xmlns:exsl="http://exslt.org/common"/&gt;
  </code></pre>