diff --git a/xml/package.lisp b/xml/package.lisp index 35fccfa..70969b1 100644 --- a/xml/package.lisp +++ b/xml/package.lisp @@ -50,6 +50,8 @@ ;; #-rune-is-character #:make-character-stream-sink/utf8 + #:omit-xml-declaration-p + #:with-xml-output #:with-output-sink #:with-namespace diff --git a/xml/unparse.lisp b/xml/unparse.lisp index f6263fd..d11b0a5 100644 --- a/xml/unparse.lisp +++ b/xml/unparse.lisp @@ -80,7 +80,10 @@ (previous-notation :initform nil :accessor previous-notation) (have-doctype :initform nil :accessor have-doctype) (have-internal-subset :initform nil :accessor have-internal-subset) - (stack :initform nil :accessor stack))) + (stack :initform nil :accessor stack) + (omit-xml-declaration-p :initform nil + :initarg :omit-xml-declaration-p + :accessor omit-xml-declaration-p))) #-rune-is-character (defmethod hax:%want-strings-p ((handler sink)) @@ -134,7 +137,8 @@ ;;;; doctype and notations (defmethod sax:start-document ((sink sink)) - (unless (canonical sink) + (unless (or (canonical sink) + (omit-xml-declaration-p sink)) (%write-rod #"" sink) (%write-rune #/U+000A sink)))