catalog fixes and workarounds
This commit is contained in:
@ -222,8 +222,8 @@
|
|||||||
(defun parse-catalog-file (uri)
|
(defun parse-catalog-file (uri)
|
||||||
(handler-case
|
(handler-case
|
||||||
(parse-catalog-file/strict uri)
|
(parse-catalog-file/strict uri)
|
||||||
(file-error () nil)
|
((or file-error xml-parse-error) (c)
|
||||||
(xml-parse-error () nil)))
|
(warn "ignoring catalog error: ~A" c))))
|
||||||
|
|
||||||
(defparameter *catalog-dtd*
|
(defparameter *catalog-dtd*
|
||||||
(let* ((cxml
|
(let* ((cxml
|
||||||
@ -248,9 +248,8 @@
|
|||||||
:element-type '(unsigned-byte 8)
|
:element-type '(unsigned-byte 8)
|
||||||
:direction :input))
|
:direction :input))
|
||||||
(parse-stream s
|
(parse-stream s
|
||||||
(make-recoder (make-instance 'catalog-parser :uri uri)
|
(make-instance 'catalog-parser :uri uri)
|
||||||
#'rod-to-utf8-string)
|
:validate nil
|
||||||
:validate t
|
|
||||||
:dtd (make-extid nil dtd-sysid)
|
:dtd (make-extid nil dtd-sysid)
|
||||||
:root #"catalog"
|
:root #"catalog"
|
||||||
:entity-resolver #'entity-resolver)))))
|
:entity-resolver #'entity-resolver)))))
|
||||||
@ -284,7 +283,11 @@
|
|||||||
(setf lname (or lname qname))
|
(setf lname (or lname qname))
|
||||||
;; we can dispatch on lnames only because we validate against the DTD,
|
;; we can dispatch on lnames only because we validate against the DTD,
|
||||||
;; which disallows other namespaces.
|
;; 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))
|
(prefer-stack handler))
|
||||||
(push (string-or (get-attribute/lname "base" attrs) (base handler))
|
(push (string-or (get-attribute/lname "base" attrs) (base handler))
|
||||||
(base-stack handler))
|
(base-stack handler))
|
||||||
|
|||||||
Reference in New Issue
Block a user