2009年2月1日日曜日

XMLを扱う (その13) [Unicode][Common Lisp]

ワークフローの続き。

cxmlのサイトをみてみると、SAXのコーナーが他の機能の説明の基礎になっ
ているようだ。まあDOMをつくるのにもSAXを使うからなぁ。cxmlのSAXコー
ナーを読んでみる。

http://common-lisp.net/project/cxml/sax.html

むぅ。そもそも、SAXって何だ? わからなくなった。なんかもやもやして
いるのは、SAXってparserじゃなかったっけ?ってこと。XML文書を読んで
いくにしたがってeventがあがって、そのeventにたいしてcallbacksを定義
しておくっていう構造だった気がするのだが。cxmlではsax eventをユーザ
がいろいろ生成できてconstructorに使えるような記述がある。

そもそものSAXを調べる。

つ http://www.saxproject.org/

---
** 規格化はされていない。デファクトである。

** もともとはJava用のAPI。version 2.0.1ではいろいろな言語が対応し
ている。

** SAXの仕様はJava用の実装そのものである。なので、他の言語で何が
SAXかは、その言語での実装者が決めることだ。おお、すごい。

** Java APIをみてみる。Javaはよくわからないが、そもそもSAXに対する
私の理解は間違ってなさそうだ。(確信はもてない)
---

というわけで、もしcxmlのsaxではユーザがsax eventsを生成できるなら、
それはcxmlにおけるSAXの独自な特徴なのだろう。

cxmlのsaxに戻る。

cxml:parseの説明を読むが、正直何を言ってんだかさっぱりわからない。

ソースを読む。

ああ、わかってきた。runeというのはUnicodeの取り扱いが処理系毎に違
うことを吸収するための抽象化なんだ。なので、compile時に処理系毎に
何がrune?というが選択されてcompileされるようだ。今日は力尽きたので、
次回この理解が本当に正しいかどうかソースを読み込む。


こつこつ。

0 件のコメント: