Kahua Release
- Release Note
- Download
- Current Version 1.0.7.3 (2008-05-08)
kahua-web Release
- kahua-webとは
- Release Note
- Download
- Current Version 0.3.1 (2007-06-12)
Security Advisory
Event Log
Documentation
For developers
Site info
Related Site
Kahua での HTML コンテンツの記述について (2004/02/19 -- nobsun)
1. 従来の記述方法
従来、Kahua では、HTML コンテンツは、SXML 形式で直かに記述していました。 たとえば、以下のようにです。
(define (simple-page ttl . elems)
`((html (head (title ,ttl))
(body (@ (bgcolor "white"))
(h1 ,ttl) ,@elems))))
このように表現した場合、html head body などの HTML 要素のタグに対応する 部分は、シンボルで表現されています。このような表現のなかで、変数を評価 してあつかいたい場合には、quasi-quote、unquote、unquote-splicing を利用 します。
2. 新たに追加した関数による記法
今、Kahua では、SXML のタグを関数で表現することもできるようになっています 以下の二つの記法はあくまでも過渡的なものなので、近い将来変更されることが 予想されます。
2.1 タグの関数化
タグを関数(SXMLノードを生成する関数)を使えるようにしました。
(define (simple-page-bis ttl . elems)
(node-set:
(html: (head: (title: ttl))
(body: (@: (bgcolor "white"))
(h1: ttl)
(node-list-to-node-set elems)))))
関数名は、各タグの後に':'を追加したものになっています。 また、属性リストおよび補助属性リストの記述については、それぞれ '@:' および '@@:' というマクロで表現できます。これらの関数表現を利用する場合には、 基本的には quasi-quote、unquote、unquote-splicing は必要ありません。
今現在、Kahua/examples にあるサンプルアプリケーションは、こちらの 新しい関数による記法での記述に変更されています。
2.2 タグの高階関数化
タグの関数化をさらにすすめて、高階関数化したものも使えるようにしました。
(define (simple-page-tres ttl . elems)
(html/ (head/ (title/ ttl))
(body/ (@/ (bgcolor "white"))
(h1/ ttl)
(node-set elems))))
関数名は、各タグの後に'/'を追加したものになっています。 また、属性リストおよび補助属性リストの記述については、それぞれ '@/' および '@@/' というマクロで表現できます。これらの関数は、関数を返しますので、 上の2つの記法とは混在できません。
3. 今後の記法の進化と互換性
今後、Kahua では SXML の各タグは高階関数化し、組合せ子として構成する 予定です。現在はその過渡期として、シンボルによる表現と単純な関数としての 表現、高階関数の表現のどれでもできるようになっていますが、関数による表現は 現段階では実験的なもので、今後変更される可能性があります。シンボルの直書きに よる表現については、今後も(しばらくは)そのまま使えるようにしておく予定ですので、 データの互換性が気になる場合には、これを利用してください。