2012-07-03 42 views
2

我试图使用生成以下HTML代码CL-谁:CL-谁和格式

<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中使用格式?我应该用什么来代替?

回答

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。

+0

'FMT'在语法的内容部分工作,而不是属性值部分。 – Xach

+0

@Xach:通过工作,我想你的意思是它符合你的期望,因为它和op的FORMAT一样工作(写入当前流)。 – Daimrod