interleave の意味と処理 20050721 -KM- 1) RELAX NG の仕様に出ている例を読み解くと (interleaves 1) ( ) interleaves ( ); ( ) (interleaves 2) m1 interleaves m2; m3 ------------------------------- m4, m1 interleaves m4, m2; m3 (interleaves 3) m1 interleaves m2; m3 ------------------------------- m4, m1 interleaves m2; m4, m3 「例えば, のインタリーブは 及び である。」の証明 (a) m1=(), m2=(), m3=(), m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves (); (a-1a) m1=, m2=(), m3=, m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves ; (a-1a-1b) m1=, m2=(), m3=, m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves ; <== (*) (a-1a) m1=, m2=(), m3=, m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves ; (a-1a) m1=, m2=, m3=, m4= とすると (interleave 1) より interleaves ; <== (*) (interleave 2) より interleaves ; (b) m1=(), m2=(), m3=(), m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves (); (b-1a) m1=, m2=, m3=(), m4= とすると (interleave 1) より interleaves ; () (interleave 2) より interleaves ; (b-1a-2a) m1=, m2=, m3=, m4= とすると (interleave 1) より interleaves ; <== (*) (interleave 2) より interleaves ; 2) mappingSchema では、何が "列" なだろう? bit, byte, element が対等な関係が良い。 3) パターン は、 にマッチするので注意が必要。 4) パターン が、 にマッチしたりすることはありません。 5) interleave の処理で意味を持つのは、 (a) interleave の子 (その数だけ interelave 器を作る) (b) interleave の子からみて、自分自身を含む直近のコンテナ 例えば、 interleave - bit(a,b) interleave - oneOrMore(a) - bit(b) です。