0.4.12から入った(binary data)ライブラリの便利さに驚いているので、同様な感じで定義一発でmarshalとunmarshalも可能になるといいかなぁと思っている。例えばこんな感じで定義して
;; Pseudo code (define-define-xml-schema define-xml-type reader writer) (define-xml-type <customer> () ((name :type xs:string :element Name :min 1 :max 1) (birth-of-country :type xs:string :element BirthOfCountry :min 0 :max 1)) :namespace "http://example.com" :element Customer)こんな感じで使えるとか
(let ((x (call-with-input-file "sample.xml" reader)) (writer x (current-output-port))) #| <Customer xmlns="http://example.com"> <Name>read from sample.xml</Name> </Customer> |#ぱっと思いついた感が強いな。
っで、この定義も手で書くのはあほらしいので、XSDをパースして適当に自動生成されるとうれしい気がする。(実際Githubに上げてるSOAPライブラリはその辺が面倒であまり使ってなかったりする・・・)
もう少し案を練ってから実装してみるか。
No comments:
Post a Comment