冬休みに入ってからしばらくはRELAX NGまわりをいじり直していた。まず長いこと懸念していたバグ潰しがようやく実行に移せた。そして直ったと思ったら、今度はパフォーマンスに(relaxng.rngを解析できないほどの)致命的な問題が生じて、最適化をいくつか実装する必要があった。結論から言えばwhitespaceの扱いがおかしかっただけなのだけど。そして今日、ようやく3年前にやっつけたwhitespaceまわりの問題を全て解消した(はず)。 僕の知る限り、現時点でバグの原因は3種類だけだ: 1) XLink section 5.4の制約が未実装であること、2) XML Schema datatypesのfacetが上手く機能していない(場合がある?)こと、3) exceptを子にもつname classをexceptにもつname classのanalysisに失敗すること。 というわけで、