anchor.diff:  ;;; CONDITIONS
   ;;;-----------------------------------------------------------------------------
   (define-condition xml-parse-error (error) 
  -  ((line :initarg :line :reader error-line)))
  +  ((offset :accessor offset)))
  +
  +(define-condition unresovable-entity (xml-parse-error)
  +  ((entity :initarg :entity :accessor entity))
  +  (:report (lambda (c s)
  +             (format s "Unable to resolve entity ~S at offset ~D." (entity c) (offset c)))))
  +
  +(define-condition reference-to-undeclared-namespace (xml-parse-error)
  +  ((namespace :accessor namespace :initarg :namespace))
  +  (:report (lambda (c s)
  +             (format s  "Undeclared namespace ~S referenced." (namespace c)))))
  +
  +(define-condition unmatched-end-tag (xml-parse-error)
  +  ((expected :accessor expected :initarg :expected)
  +   (found :accessor found :initarg :found))
  +  (:report (lambda (c s)
  +             (format s "Unmatched end tag, found ~S and was expecting ~S." (found c) (expected c)))))
   
   ;;;-----------------------------------------------------------------------------
   ;;; NODE INTERFACE
  
positive.code:   (declare (special uri-to-package))
    (if ns
        (or (cdr (assoc (or (lookup-namespace ns env)
                            (error "Undeclared namespace ~S refernced." ns))
                        uri-to-package :test #'string=))
            (error "Unrecognized namespace ~S referenced." ns))
        *package*))
  
  (defun intern-xml-name (name ns env)
  
negative.code:                              (t (if (element-val c)
                                      (push (element-val c) children)))))))
         (or (eql (node-name elem) end-name)
             (error 'unmatched-end-tag :found end-name :expected (node-name elem)))))
       ;; package up new node
       (progn
         (setf (node-children elem) (nreverse children))
  