anchor.diff:     (namespace-prefix-bind (c)
        (warn "Caught bind signal: ~s" c)
        (continue c)))
  -;; ^ always adds a new prefix. check :
  -(namespace-registry-namespace-table *r*)
  +;; ^ always adds a new prefix. cf:
  + (namespace-registry-namespace-table *r*)
   
   |#
   
   ;;; * QName Resolvers
   
   (defun ensure-qname (cname registry)
  -  (declare (type string cname) (type namespace-registry registry)
  -	   (values simple-string namespace &optional))
  +  (declare (type string cname)
  +	   (type namespace-registry registry)
  +	   (values simple-string simple-namespace &optional))
     (multiple-value-bind (prefix name)
         (split-string-1 #\: cname)
   
  -    (unless (cxml::valid-ncname-p prefix)
  -      (error 'type-error :expected-type 'ncname :datum prefix))
  +    (when prefix
  +      (unless (cxml::valid-ncname-p prefix)
  +	(error 'type-error :expected-type 'ncname :datum prefix)))
  +
       (unless (cxml::valid-ncname-p name)
         (error 'type-error :expected-type 'ncname :datum name))
   
  -    (let ((ns (resolve-prefix-namespace prefix registry)))
  +    (let ((ns (cond
  +		(prefix (resolve-prefix-namespace prefix registry))
  +		(t (namespace-registry-null-namespace registry)))))
         (unless ns
   	(error 'prefix-not-found-error
   	       :name prefix
  
positive.code:   ;; FIXME: Compatibility with Closure RUNES - needs to be further
    ;; integrated into this system, for supporting non-UTF lisp
    ;; implementations
    '(and runes:rod (satisfies cxml::valid-ncname-p)))
  
  (deftype simple-ncname ()
    '(and (simple-array runes:rune) ncname))
  
  
  ;;; * Namespace Qualified Names (QNames)
  
negative.code: |#
  
  
  (defmethod print-object ((instance prefix-qualified-namespace) stream)
    (print-unreadable-object (instance stream :type t :identity t)
      (format stream "~A ~A ~A ~A"
  	    (namespace-prefix-table instance)
  