从球拍中的X表达式生成HTML的推荐方法是什么?看起来response/xexpr可以做到这一点,但似乎是为服务http响应而设计的。我唯一需要的是从球拍列表(或X表达式)生成一个HTML字符串,不需要有一个网络服务器参与。
发布于 2012-02-13 06:32:25
如果我没记错的话,xml库中的xexpr->string函数应该会执行您所要求的操作。对于使用它的示例,您可以查看here,该示例使用它为一个简化的web服务器应用程序生成HTML响应。
> (xexpr->string '(html (head (title "Hello")) (body "Hi!")))
"<html><head><title>Hello</title></head><body>Hi!</body></html>"发布于 2012-02-13 07:38:03
如果你愿意抛弃xexprs而使用更方便的工具,那么有一种新的语言可以用来生成球拍网页。它还没有文档化(因此它仍然是新的,也不是完全公开的),但是您可以看到它是如何在these sources中使用的。作为演示它的一个快速示例,运行以下命令:
#lang scribble/html
@(define name "foo")
@html{@head{@title{@name}}
@body{@h1{@name}}}另一个示例使用它作为库:
#lang at-exp racket/base
(require scribble/html)
(define (page name)
(output-xml
@html{@head{@title{@name}}
@body{@h1{@name}}}))
@page{foo}at-exp并不是必需的,它只是简化了用代码编写大量文本的过程。(对于xexprs,它也同样有用。)
主要区别在于,在这种语言中,HTML标记实际上是绑定,这使得维护代码变得很方便。它还可以非常灵活地接受文本--例如,不需要将其限制在字符串和子标记的严格列表中,因此您永远不会遇到在哪里使用append-map等问题。
https://stackoverflow.com/questions/9253126
复制相似问题