Atomを扱えるようにするワークフロー
----------------------------------
nxml-modeの配布にatomのrncが含まれているか確認。
含まれていない。
rfc4287からコピペで作成。
これは確立されたschemaなので、~/local/lib/schema/に置くことにする。
nxml-modeのschemaディレクトリには入れない。入れるとnxml-modeの更新
時の作業がややこしくなる。
rnc作成モードもあるようだが、今は使わない。将来やる。
コピペ完了。
中身をみるとSchematronを名前空間で参照している。
Schematronのrncは存在するのか?
http://xml.ascc.net/schematron/
には存在しない。
念のため上記URIから
Schematron schema
XML Schema schema
DTD schema
を取得する。とやってたら、
http://www.schematron.com/spec.html
を発見。
RELAX NG Comapact Syntax schema for ISO Schematron
だって。あるじゃん。
iso-schematron.rnc
を入手。~/local/lib/schema/に設置。
さて、rfcのrncのnamespaceが、
namespace atom = "http://www.w3.org/2005/Atom"
を含んでいるのがわからない。自分のことじゃないの??
http://relaxng.org/compact-tutorial-20030326.html
を確認する。
わかった。自分のことなのだ。
atom.rncにてelementを定義しているところはすべてatom:hogeになってい
る。で、atom:が付いていないシンボル?は、グラマーなどの名前につか
われている。感覚的に言うと、namespace atomの名前たちはexternalであ
り、namespace localの名前達はinternalという感じ。
もちろん、XML側での名前空間の利用時は、
<feed xmlns="http://www.w3.org/2005/Atom">
などとxmlnsをprefixなしで指定するから、atom:は不要である。
これで、rncは揃った。nxml-modeへの登録だ。
変数 rng-schema-locating-filesに
locating-filesに~/local/lib/schema/schemas.xmlを登録する。
(push "~/local/lib/schema/schemas.xml" rng-schema-locating-files)
そして、schemas.xmlはこんな感じ。
----
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
<uri pattern="*.atom" typeId="ATOM"/>
<uri pattern="*.sch" typeId="SCHEMATRON"/>
<namespace ns="http://www.w3.org/2005/Atom" typeId="ATOM"/>
<namespace ns="http://www.ascc.net/xml/schematron" typeId="SCHEMATRON"/>
<typeId id="ATOM" uri="atom.rnc"/>
<typeId id="SCHEMATRON" uri="iso-schematron.rnc"/>
</locatingRules>
----
これで、*.atomを開くと、、、お、自動的にSchemaが選択された。
道程は長い。こつこつ。
0 件のコメント:
コメントを投稿