2012-02-12 5 views
6

ラケットのX表現からHTMLを生成するにはどうすればよいでしょうか? response/xexprのように見えますが、http応答に対応するように設計されているようです。私が必要とするのは、Racketリスト(またはX式)からHTML文字列を生成することだけです。Webサーバーを組み込む必要はありません。ラケットにHTMLを生成

答えて

6

xmlライブラリのxexpr->string関数は、私が間違っていなければ、あなたが求めていることを行うはずです。使用例については、hereをご覧ください。この例では、簡単なWebサーバーアプリケーションのHTML応答を生成するためにこの例を使用しています。

> (xexpr->string '(html (head (title "Hello")) (body "Hi!"))) 
"<html><head><title>Hello</title></head><body>Hi!</body></html>" 
+0

Works魅力のように、ありがとう! – GiantSquid

5

あなたが潜在的に、より便利な施設のxexprsをダンプして喜んでいる場合は、ラケットのWebページを生成するために使用される新しい言語があります。それはまだ文書化されていません(したがって、それはまだ新しく、適切に公開されていません)。しかし、それは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などのような疑問に直面することはありません。

関連する問題