スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

S式→XML

XHTMLとかMathMLをXMLで書くのはつらいので、S式から変換しよう。というわけで書いてみた。
属性の指定方法はSXMLっぽい。
最低限の機能しかない。文字列のエスケープすらしない。
(define (make-xml t)
(define (attr->string attr)
(if (null? attr)
""
(string-append " " (symbol->string (caar attr)) "=\"" (cadar attr) "\"" (attr->string (cdr attr)))))
(cond
((list? t)
(let* ((tag (symbol->string (car t)))
(has-attr? (and (pair? (cdr t)) (pair? (cadr t)) (eq? (caadr t) '@)))
(attrs (attr->string (if has-attr? (cdadr t) '())))
(children (if has-attr? (cddr t) (cdr t))))
(if (null? children)
(string-append "<" tag attrs "/>")
(string-append "<" tag attrs ">"
(apply string-append (map make-xml children))
""))))
((string? t) t)
((number? t) (number->string t))))
スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。