cl-who и формат
Я пытаюсь сгенерировать следующий HTML-код, используя cl-who:
<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? Что я должен использовать вместо этого?
1 ответ
Решение
Это потому, что вы не хотите писать прямо в потоке.
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.