title: Create xsd.Element with specific namespace naming in Zeep
body: <p>I'm trying to create a custom SOAP header element using Zeep which uses several namespaces. When doing so, They are named <code>ns0</code>, <code>ns1</code> and so on. For example:</p>
  <pre class="lang-py prettyprint-override"><code>usernametoken_header = xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken', xsd.ComplexType([
      xsd.Attribute('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Id', xsd.String()),
      xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Username', xsd.String()),
      xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Password', xsd.String())
      ]))
  </code></pre>
  <p>Will have <code>ns0</code> for what is <code>wsse</code>, and <code>ns1</code> for what is <code>wsu</code>. Now I want to rename them to those values, but <strong>without repositioning the namespace declaration</strong>. I also don't want to use <code>UsernameToken</code>. I am aware of the option to do:</p>
  <pre class="lang-py prettyprint-override"><code>client.set_ns_prefix('wsse', &quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;)
  </code></pre>
  <p>But this repositions the namespace declaration from the first child that uses it, up to the root node. I do not want such repositioning. Is there any way to do a in-place renaming of the namespace?</p>