class namespace_manager :This class manages mappings from URIs to normalized prefixes. For every namespace a namespace_manager object contains a set that maps various URI's to the same normalized prefixobject..end
np:
  uri1 |-> np, uri2 |-> np, ..., uriN |-> np 
 The normalized prefix np is characterstical of the namespace, and
 identifies the namespace uniquely.
 The first URI uri1 is the primary URI, the other URIs are aliases.
 In order to create an empty namespace, call
 Pxp_dtd.create_namespace_manager.
 See Intro_namespaces for an introduction to namespaces and more
 links to other explanations about namespace managers.
The following operations are supported:
add_namespace np uri: adds a new mapping uri |-> np to the
   manager. Neither np nor uri must already be part of another
   mapping in the manager.add_uri np uri: adds a new alias uri for an existing namespace
   which is identified by the normprefix np. The normprefix np
   must already be part of a mapping which is then extended by this
   method.lookup_or_add_namespace p uri: If there is already some mapping
   uri |-> np, the normprefix np is simply returned ("lookup"). In this
   case p is ignored. Otherwise uri is not yet mapped, and in this
   case some unique np must be found such that uri |-> np can be
   added (add_namespace). First, the passed prefix p is tried.
   If p is free, it can be taken as new normprefix: np = p. Otherwise
   some number n is found such that the concatenation p ^ n is free:
   np = p ^ n. The operation returns np.method add_namespace : string -> string -> unitadd_namespace np uri: adds a new namespace to the object. The
 namespace is identified by the normprefix np and contains initially
 the primary URI uri.
 The method fails (Namespace_error) if either np already identifies
 some namespace or if uri is already member of some namespace.
 Nothing happens if uri is the sole member of the namespace np.
 It is required that np <> "".method add_uri : string -> string -> unitadd_uri np uri: adds uri as alias URI to the namespace identified
 by the normprefix np (see above for detailed semantics). The method
 raises Namespace_prefix_not_managed if the normprefix np is unknown
 to the object,
 and it fails (Namespace_error) if the uri is member of a
 different namespace. Nothing happens if the uri is already member
 of the namespace np.
 Change in PXP 1.2: Using exception Namespace_prefix_not_managed
 instead of Not_found.
method lookup_or_add_namespace : string -> string -> stringlookup_or_add_namespace p uri: first, the method looks up if
 the namespace for uri does already exist. If so, p is ignored,
 and the method returns the normprefix identifying the namespace.
 Otherwise, a new namespace is added for some normprefix np which
 initially contains uri. The normprefix np is calculated upon p
 serving as suggestion for the normprefix. The method returns
 the normprefix.method get_primary_uri : string -> stringNamespace_prefix_not_managed. get_uri "" raises always this
 exception.method get_uri_list : string -> string list[] if the normprefix is
 unused. get_uri_list "" returns always []. The last URI of the
 returned list is the primary URI.method get_normprefix : string -> stringNamespace_not_managed.method iter_namespaces : (string -> unit) -> unitmethod as_declaration : (string * string) listnew namespace_scope_impl mng None (mng#as_declaration) 