2

cl-whoを使用して次のhtmlコードを生成しようとしています。

<html>
<body>
<div id="cnt_1"></div>
<div id="cnt_2"></div>
<div id="cnt_3"></div>
</body>
</html>

そして、これが私がうまくいくと思ったコードです:

(with-html-output-to-string (*standard-output* nil)
 (:html
  (:body
   (do ((cnt 1 (+ cnt 1)))
       ((> cnt 3))
     (htm (:div :id (format t "cnt_~A" cnt)))))))

しかし、代わりに次の出力が得られます。

<html><body><divcnt_1></div><divcnt_2></div><divcnt_3></div></body></html>

:idは関数呼び出しでは機能しないようです。cl-whoでフォーマットを使用できないということですか?代わりに何を使用すればよいですか?

4

1 に答える 1

5

これは、ストリームに直接書き込みたくないためです。

CL-USER> (with-html-output-to-string (s) (:div :id "test"))
"<div id='test'></div>"

CL-USER> (with-html-output-to-string (s)
           (:html
            (:body
             (do ((cnt 1 (+ cnt 1)))
                 ((> cnt 3))
               (htm (:div :id (format nil "cnt_~A" cnt)))))))

"<html><body><div id='cnt_1'></div><div id='cnt_2'></div><div id='cnt_3'></div></body></html>"

ちなみに、ストリームに直接書き込みたい場合は、CL-WHO:FMTを使用してください。

于 2012-07-03T15:42:39.733 に答える