public string GetNamespace()
 {
     if (!node.GetOptions().IsSchemaNode())
     {
         // determine namespace of leaf node
         QName qname = new QName(node.GetName());
         return XMPMetaFactory.GetSchemaRegistry().GetNamespaceURI(qname.GetPrefix());
     }
     else
     {
         return baseNS;
     }
 }
		/// <summary>Writes one namespace declaration to the output.</summary>
		/// <param name="prefix">a namespace prefix (without colon) or a complete qname (when namespace == null)</param>
		/// <param name="namespace">the a namespace</param>
		/// <param name="usedPrefixes">a set containing currently used prefixes</param>
		/// <param name="indent">the current indent level</param>
		/// <exception cref="System.IO.IOException">Forwards all writer exceptions.</exception>
        private void DeclareNamespace(string prefix, string @namespace, HashSet<string> usedPrefixes, int indent)
		{
			if (@namespace == null)
			{
				// prefix contains qname, extract prefix and lookup namespace with prefix
				QName qname = new QName(prefix);
				if (qname.HasPrefix())
				{
					prefix = qname.GetPrefix();
					// add colon for lookup
					@namespace = XMPMetaFactory.GetSchemaRegistry().GetNamespaceURI(prefix + ":");
					// prefix w/o colon
					DeclareNamespace(prefix, @namespace, usedPrefixes, indent);
				}
				else
				{
					return;
				}
			}
			if (!usedPrefixes.Contains(prefix))
			{
				WriteNewline();
				WriteIndent(indent);
				Write("xmlns:");
				Write(prefix);
				Write("=\"");
				Write(@namespace);
				Write('"');
				usedPrefixes.Add(prefix);
			}
		}