lisp ile ilgili sayfalarda web tasarımında nasıl kullanılabileceğine dair 
birçok konu okudum (asıl esin kaynağım lisp ile web programlamaya dalış). ancak 
diğerlerinin açık kodlarını okurken biraz bana garip geldi. bende 3 basit komut 
yazdım. ilk iki komut sadece web sayfalarında değil xml oluşturmada da 
kullanılabilir diye düşünüyorum. tagların ve parametre adlarının çift tırnak 
içinde yazılması garip gelebilir. ben de ilk etapta onları çift tırnaksız veya 
sembolleştirmeden yazayım diye düşündüm. sonra farkettim ki bunların veri 
olarak girilmesi hem lispin mantığına uygun, hemde bu tagların ve parametre 
adlarının istenildiğinde kodu değiştirmeden değiştirilebilmesinin sağladığı 
kolaylıktan dolayı bu şekilde bıraktım. aşağıdaki gibi bir web sayfasının bir 
kalıp olarak oluşturulup üzerinde kalıp bozulmadan istenilen değişikliğin 
yapılabileceğini düşünüyorum.


şu an en büyük sorunum bu kodları yazarken "\"" karşılığının " olması 
gerekirken \" olmasıdır. maalesef birçok common lisp ortamında denedim olmadı. 
buna ihtiyacımın sebebi xml formatında tag parametresinin isim="içerik" 
yapısında olması zorunluluğu. bununla ilgili sorunuma cevap verirseniz 
sevinirim.

;içeriği olan taglar için: html body title body p gibi

(defun % (tag parametre &rest icerik) (format nil "<~a ~{~a=\"~a\" 
~}>~{~a~}</~a>~%" tag parametre icerik tag) )

;içeriği olmayan taglar için: input img gibi

(defun %- (tag parametre) (format nil "<~a ~{~a=\"~a\" ~}/>~%" tag parametre) )


;basit css tanımlaması

(defun %% (tag parametre) (format nil "~a {~%~a:~a;~%~}~%" tag parametre) )



;örnek bir web sayfası

; genel kalıp (% tag '(parametreler) içerik)

; tag parametreler ve içerik değişkenle veri aktarmadığı sürece çift tırnak 
içinde

; yazılmalıdır. parametreler ikişerli olarak düşünülmelidir. birinci parametre

; parametre adı ikinci parametre parametre içeriği üçüncü parametre 
2.parametrenin 

; adı dördüncü parametre 2. parametrenin içeriği ve bu şekilde devam eder.

; içerik tek parça olmak zorunda değildir. o yüzden rest kullandım bu da body 
gibi

; tagların birçok iç tagına sahip olmasını sağlıyor. text/html çıktısının şu 
anki en

; büyük sorunu örneğin body tagında geçen bgcolor="blue" olması gerekirken

; bgcolor=\"blue\" olması bunu istersem hiç çift tırnak koymayarak ta 
halledebilirim

; ama öyle kalmasını tercih ettim.

(% "html" '()

    (% "head" '()

        (% "title" '() "Deneme sayfası" )

        (%- "meta" '( "http-equiv" "content-type" 

                           "content" "text/html; charset=windows-1254"))

     )

     (% "body" '("bgcolor" "blue" "alink" "black")

         (% "h1" '() "Bu sayfanın konusu yok")

         (% "p" '("align" "left")

              "bu deneme sayfasının ilk satırı")

         (% "p" '()

              "bu deneme sayfasının ikinci satırı")

     )

)
_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap