From 013867cf4e8e003013988da3260b407ab7912673 Mon Sep 17 00:00:00 2001 From: dlichteblau Date: Wed, 6 Apr 2005 19:23:53 +0000 Subject: [PATCH] - in p/document, check types of user-supplied arguments for better error messages - documents parsed from octet vectors don't have a base sysid, so don't try to merge it into sysids referenced in such documents --- xml/xml-parse.lisp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/xml/xml-parse.lisp b/xml/xml-parse.lisp index 0f912ef..da5579f 100644 --- a/xml/xml-parse.lisp +++ b/xml/xml-parse.lisp @@ -828,14 +828,14 @@ (defstruct (internal-entdef (:include entdef) (:constructor make-internal-entdef (value)) - (:conc-name #:ENTDEF-)) + (:conc-name #:entdef-)) (value (error "missing argument") :type rod) (expansion nil)) (defstruct (external-entdef (:include entdef) (:constructor make-external-entdef (extid ndata)) - (:conc-name #:ENTDEF-)) + (:conc-name #:entdef-)) (extid (error "missing argument") :type extid) (ndata nil :type (or rod null))) @@ -875,8 +875,10 @@ (defun absolute-uri (sysid source-stream) (let ((base-sysid (zstream-base-sysid source-stream))) - (assert (not (null base-sysid))) - (puri:merge-uris sysid base-sysid))) + ;; XXX is the IF correct? + (if base-sysid + (puri:merge-uris sysid base-sysid) + sysid))) (defstruct (extid (:constructor make-extid (public system))) (public nil :type (or rod null)) @@ -2533,10 +2535,16 @@ (car (nth-value 1 (peek-token input))) (cdr (nth-value 1 (peek-token input)))))) (consume-token input))) - + (defun p/document (input handler &key validate dtd root entity-resolver disallow-internal-subset) + ;; check types of user-supplied arguments for better error messages: + (check-type validate boolean) + (check-type dtd (or null extid)) + (check-type root (or null rod)) + (check-type entity-resolver (or null function symbol)) + (check-type disallow-internal-subset boolean) (let ((*ctx* (make-context :handler handler :entity-resolver entity-resolver