Sets the preferred prefix for ns_uri.  If add_if_not_exist is True,
        the prefix is added if it's not already registered.  Otherwise,
        setting an unknown prefix as preferred is an error.  The default
        is False.  Setting to None always works, and indicates a preference
        to use the namespace as a default.  The given namespace must already
        be in this set.

        Args:
            ns_uri (str): the namespace URI whose prefix is to be set
            prefix (str): the preferred prefix to set
            add_if_not_exist (bool): Whether to add the prefix if it is not
                already set as a prefix of ``ns_uri``.

        Raises:
            NamespaceNotFoundError: If namespace ``ns_uri`` isn't in this set.
            DuplicatePrefixError: If ``prefix`` already maps to a different
                namespace.

def set_preferred_prefix_for_namespace(self, ns_uri, prefix, add_if_not_exist=False):
        """Sets the preferred prefix for ns_uri.  If add_if_not_exist is True,
        the prefix is added if it's not already registered.  Otherwise,
        setting an unknown prefix as preferred is an error.  The default
        is False.  Setting to None always works, and indicates a preference
        to use the namespace as a default.  The given namespace must already
        be in this set.

        Args:
            ns_uri (str): the namespace URI whose prefix is to be set
            prefix (str): the preferred prefix to set
            add_if_not_exist (bool): Whether to add the prefix if it is not
                already set as a prefix of ``ns_uri``.

        Raises:
            NamespaceNotFoundError: If namespace ``ns_uri`` isn't in this set.
            DuplicatePrefixError: If ``prefix`` already maps to a different
                namespace.
        """
        ni = self.__lookup_uri(ns_uri)

        if not prefix:
            ni.preferred_prefix = None
        elif prefix in ni.prefixes:
            ni.preferred_prefix = prefix
        elif add_if_not_exist:
            self.add_prefix(ns_uri, prefix, set_as_preferred=True)
        else:
            raise PrefixNotFoundError(prefix)