Index: xml-parse.lisp =================================================================== RCS file: /project/cxml/cvsroot/cxml/xml/xml-parse.lisp,v retrieving revision 1.58 diff -u -u -u -r1.58 xml-parse.lisp --- xml-parse.lisp 29 Dec 2005 00:31:36 -0000 1.58 +++ xml-parse.lisp 9 Jan 2006 01:55:21 -0000 @@ -2011,8 +2011,8 @@ ;; :FILE and NIL anway. (when (eql (search "file://" str) 0) (setf str (subseq str (length "file://")))) - (puri:parse-uri str)) + (puri:parse-uri (coerce str 'simple-string))) (defun p/system-literal (input) (let* ((rod (p/id input)) --- catalog.lisp.~1.2.~ 2005-11-28 23:25:45.000000000 +0100 +++ catalog.lisp 2006-01-09 02:57:05.000000000 +0100 @@ -222,8 +222,8 @@ (defun parse-catalog-file (uri) (handler-case (parse-catalog-file/strict uri) - (file-error () nil) - (parser-error () nil))) + ((or file-error xml-parse-error) (c) + (warn "ignoring catalog error: ~A" c)))) (defparameter *catalog-dtd* (let* ((cxml @@ -248,9 +248,8 @@ :element-type '(unsigned-byte 8) :direction :input)) (parse-stream s - (make-recoder (make-instance 'catalog-parser :uri uri) - #'rod-to-utf8-string) - :validate t + (make-instance 'catalog-parser :uri uri) + :validate nil :dtd (make-extid nil dtd-sysid) :root #"catalog" :entity-resolver #'entity-resolver))))) @@ -284,7 +283,11 @@ (setf lname (or lname qname)) ;; we can dispatch on lnames only because we validate against the DTD, ;; which disallows other namespaces. - (push (string-or (get-attribute/lname "prefer" attrs) (prefer handler)) + (push (let ((new (get-attribute/lname "prefer" attrs))) + (cond + ((equal new "public") :public) + ((equal new "system") :system) + ((null new) (prefer handler)))) (prefer-stack handler)) (push (string-or (get-attribute/lname "base" attrs) (base handler)) (base-stack handler))