■
- Compact Syntax はイイものだ
-
例えば次のようなRelax NG(XML構文)文書の断片があったとして意味が分かるだろうか:
<define name="head"> <element name="head"> <ref name="head.attlist"></ref> <ref name="head.content"></ref> </element> </define> <define name="head.content"> <ref name="title"></ref> </define> <define name="head.content" combine="interleave"> <zeroOrMore> <ref name="link"></ref> </zeroOrMore> </define>
いや、今分かったとして半年後に分かるだろうか。combine="interleave" の意味が。
一方、Compact Syntaxで書かれていたなら、半年後、一年後にも理解できる自信がある。
head = element head { head.attlist, head.content } head.content = title head.content &= link*
スキーマ文書など滅多に書かないので、Trangでひと手間かかったとしてもCompact Syntaxを使う利点は十分だなと、XHTML1.0のXML構文のスキーマをCompact Syntaxに書き直す練習をしていて確信した。validatorがあれば尚良い。個人的にはlibxml2が実装してくれたらとても嬉しい。