Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-11-15

KMRCLを眺める(227) DOCTYPE-STREAM

| 21:23 | KMRCLを眺める(227) DOCTYPE-STREAM - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(227) DOCTYPE-STREAM - わだばLisperになる

今回は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\">
;   "

といったところ