2012-02-12 18 views
6

में HTML उत्पन्न करें रैकेट में एक्स-एक्सप्रेशन से HTML उत्पन्न करने का अनुशंसित तरीका क्या होगा? ऐसा लगता है कि response/xexpr ऐसा करेगा, लेकिन ऐसा लगता है कि http प्रतिक्रियाओं की सेवा के लिए डिज़ाइन किया गया है। मुझे केवल एक चीज है जो रैकेट सूचियों (या एक्स-एक्सप्रेशन) से एक HTML स्ट्रिंग उत्पन्न करना है, वेब सर्वर को शामिल करने की आवश्यकता नहीं है।रैकेट

उत्तर

6

xexpr->stringxml लाइब्रेरी में कार्य करना चाहिए जो आप पूछ रहे हैं, अगर मैं गलत नहीं हूं। उदाहरण के लिए जहां इसका उपयोग किया जाता है, आप here देख सकते हैं, जहां उदाहरण सरलीकृत वेब सर्वर एप्लिकेशन के लिए HTML प्रतिक्रिया उत्पन्न करने के लिए इसका उपयोग करता है।

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

वर्क्स एक आकर्षण की तरह, धन्यवाद! – GiantSquid

5

आप एक संभावित अधिक सुविधाजनक सुविधा के लिए 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 आदि का उपयोग करने के लिए कभी भी प्रश्नों का सामना नहीं करना चाहिए

संबंधित मुद्दे