KMRCLを眺める(227) DOCTYPE-STREAM — #:g1

Posted 2010-11-15 12:23:00 GMT

今回はKMRCLのxml-utils.lispから、DOCTYPE-STREAMです。
眺める順番を間違えてしまいましたが、DOCTYPEを作成するためのユーティリティで、ストリームを取って出力するものです。
前回のDOCTYPE-FORMATは内部でこれを利用しています。
定義は、

(defun doctype-stream (stream top-element availability registered organization type
                       label language url entities)
  (format stream "<!DOCTYPE ~A ~A \"~A//~A//~A ~A//~A\"" top-element
          availability (if registered "+" "-") organization type label language)

(when url (write-char #\space stream) (write-char #\" stream) (write-string url stream) (write-char #\" stream))

(when entities (format stream " [~%~A~%]" entities))

(write-char #\> stream) (write-char #\newline stream))

動作は、
(with-output-to-string (out)
  (kl::doctype-stream out
                      "html"
                      "PUBLIC"
                      NIL
                      "W3C"
                      "DTD"
                      "XHTML 1.1"
                      "EN"
                      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
                      NIL))
;=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
;   "
といったところ

comments powered by Disqus