如何使用CL-WHO从普通Lisp列表生成对应HTML?
CL-WHO 本身支持直接传入普通 Lisp 列表生成 HTML,你可以使用它内置的 cl-who:tree-to-html 函数实现需求。
这个函数接收两个参数:第一个是你定义的列表格式的 HTML 结构,第二个是输出流对象。你可以直接输出到标准输出,也可以配合 with-output-to-string 拿到生成的 HTML 字符串,对应你的示例代码调整后如下:
(let* ((id "greeting") (message "Hello!") (the-html `((:p :id ,id) ,message))) ;; 直接输出到标准输出 (cl-who:tree-to-html the-html *standard-output*) ;; 如需得到HTML字符串,使用如下写法 (with-output-to-string (stream) (cl-who:tree-to-html the-html stream)))
补充说明:
tree-to-html是 CL-WHO 两个宏内部用来处理结构的核心函数,所有宏语法支持的属性规则、标签嵌套、布尔属性等特性,该函数都完全兼容,你不需要调整现有列表的结构格式。- 多层嵌套的 HTML 结构也可以直接传入,比如
((:div :class "wrapper") ((:h1) "标题") ((:p :id "content") "正文"))这类结构都可以正常解析生成对应HTML。
内容的提问来源于stack exchange,提问作者Flux
相关产品推荐
相关产品推荐

