Metaformatホーム メタ書式記述言語 Metaformat(MFML)仕様 第1版 リビジョン2


MFMLの構造

MFMLの構造は次のようになっている。

 メタ書式要素(1つ)−条件要素(複数可)−操作節要素(各1)−操作要素(複数可)

ある対象(段落等)のために記述したMFML文書の中には、その対象で検証したい条件群を、条件要素群として並べて、それらをメタ書式要素(最上位要素)でひとまとめにする。条件要素の並べ順は任意である(評価は文書全体の中で条件の優先度順に行われるので)。

各条件要素の配下には、その条件が成立しているときに、それが成立しなくなるよう実行させたい操作群(条件の子操作群)を、操作要素群として並べて、それらを操作節要素でひとまとめにする。操作要素の並べ順は、操作を実行させたい順と同じにする必要がある(そのうちのいずれかの操作を実行したことによってもし親条件が成立しなくなれば、それより後の操作はその時点で実行不要となるので実行されない)。

逆にいえば、ある操作要素の先祖(親の親)要素である条件要素は、その操作の親条件を表す。

またこのほかに、各条件の諸元を、その条件要素の属性または子要素として記述する。各操作の諸元を、その操作要素の属性または子要素として記述する。

MFMLのメタ書式要素

MFML文書の最上位要素を、メタ書式要素と呼ぶ。条件要素群をひとまとめにする要素なので、条件節要素と呼ぶこともある。

1つのMFML文書にメタ書式要素はかならず1つなければならない。

1つのMFML文書にメタ書式要素は複数あってはならない。

メタ書式要素は、メタ書式の種別に応じ、それぞれ次の名前でなければならない。

※XMLの要素名・属性名・キーワード名では大文字/小文字を区別する。MFMLでも同じ。

メタ書式諸元

メタ書式は、その条件群以外に、そのメタ書式の詳細情報を持つことができる。これをメタ書式諸元と呼ぶ。

メタ書式諸元は、メタ書式要素の属性として表される。これをメタ書式諸元属性という。

なお、メタ書式要素は属性として、この諸元属性のほかに、後述する書式変分属性と名前空間属性も持つ。

書式変分

1つの対象(段落・セル・表・オブジェクト)に対する各操作種別の書式変分は、その対象のメタ書式要素の各属性として表される。これを書式変分属性という。

書式変分属性は、ユーザーによって設定・変更・削除されるべきものではない。プラグインによって、自動調整と連動して、自動的に生成・更新・消去されるものである。実際と違う値をあえて設定すると、本来の正常動作が保証されない。

書式変分属性は、cured-操作種別名という名前を持つ。書式変分属性はすべて、その書式がもとの状態のときの書式変分をデフォルト値とする。そのデフォルト値は操作種別によって異なる。

たとえば、段落の水平比率の書式変分のデフォルトは100%であり、100%ならその段落の水平比率は目下調整されていない状態にある。逆に、これが100%になるよう水平比率を再設定すれば、その水平比率を原状復帰させることができる。

MFMLの名前空間

http://www.unit-j.co.jp/mf/

※URIでは大文字/小文字を区別する。

MFMLの最上位要素(すなわちメタ書式要素)では、デフォルト名前空間を
  xmlns="http://www.unit-j.co.jp/mf/"
と指定しなければならない。

※このデフォルト名前空間指定を省いたり変えたりしてはならない。

よって普通は、各MFMLノードにいちいち名前空間接頭辞をつける必要はない。

スキーマの混用・活用

メタ書式データには、メタ書式定義を記述したMFMLノードのほか、XML名前空間を使いわけて、XML構造内の任意の位置に、MFML以外の任意のスキーマのノードを入れておくこともできる。JustoFitはこれを無視して温存する。非MFMLノードの配下にもしMFMLノードがあっても、JustoFitはこれを無視して温存する。また逆に、MFMLデータをXMLフラグメントとして、他の任意のスキーマに従うXML文書の中に取り込ませて、自由に活用することもできる。これらは、JustoFitの機能範囲を超えた連携的応用の開発として位置づけられる。

MFMLノードに名前空間接頭辞(mf:を推奨)をつけたいときは、そのノードないし上位ノードで
  xmlns:接頭辞="http://www.unit-j.co.jp/mf/"
と指定しなければならない。

MFML以外の別の名前空間のノードを挿入したいときは、そのノードないし上位ノードで
  xmlns:接頭辞="URI"
と指定したうえで、その接頭辞をつけたQNameのノードを挿入するか、またはそのノードでデフォルト名前空間を
  xmlns="URI"
と指定したうえで、接頭辞をつけずにノードを挿入すること。

MFMLの条件要素

MFML文書のメタ書式要素(すなわち最上位要素)は、任意の数のMFML要素を子として持つことができる。

メタ書式要素はかならず1つはMFML要素を子として持たなければならない。

メタ書式要素の子のMFML要素は、すべて条件要素であると見なされる。

条件要素の名前は、その条件の種別を表す。

メタ書式要素以外を親に持つ条件要素は無視される。

条件諸元

各条件は、その操作群に加えて、その条件の詳細情報を持つことができる。これを条件諸元と呼ぶ。

条件諸元は、条件要素の属性または子要素として表される。これをそれぞれ条件諸元属性・条件諸元要素という。

条件諸元要素は、条件要素の何番目の子であってもよい。

条件にそなわる条件諸元は、条件の種別によって異なる。よって、条件要素が持つことのできる条件諸元属性・条件諸元要素は、条件要素名によって異なる。それ以外の属性と子要素は無視される。

なお、ある諸元を諸元属性とするか諸元要素とするかは、一般に次の規則にしたがって決められている。

属性諸元を同名の諸元要素としても無視される。逆もしかり。

標準条件諸元

あらゆる条件は、以下の条件諸元を持つことができる。これを標準条件諸元と呼ぶことがある。

条件優先度

priority属性

InDesign文書内のすべての条件は、優先度順に評価・実行される。

優先度が等しい条件どうしは、以下の順序で評価・実行される。

スタイルメタ書式条件フラグ

style属性

この属性を、MMFLの著者が書く必要はない。プログラムによって動的に付与される。

style属性は、ヘッダのCSSにマッチする要素へメタ書式をカスケードするためにスタイルメタ書式から要素へコピーされたメタ書式条件要素に一時的に付せられる識別符号。デフォルト:no。

yes
スタイルメタ書式由来の条件要素である。
no
スタイルメタ書式由来の条件要素ではない。すなわち、要素で個別に設定されている条件要素である。

MFMLの操作節要素

条件要素は、1つの操作節要素を子として持つことができる。

条件要素は、複数の操作節要素を子として持ってはならない。

操作節要素は、条件要素の何番目の子であってもよい。

操作節要素の名前は、メタ書式の種別に応じ、それぞれ次の名前でなければならない。

MFMLの操作要素

操作節要素は、任意の数のMFML要素を子として持つことができる。

操作節要素はかならず1つはMFML要素を子として持たなければならない。

操作節要素の子のMFML要素は、すべて操作要素であると見なされる。

操作要素の名前は、その操作の種別を表す。

操作節要素以外を親に持つ操作要素は無視される。

操作諸元

各操作の詳細を操作諸元と呼ぶ。

操作諸元は、操作要素の属性または子要素として表される。これをそれぞれ操作諸元属性・操作諸元要素という。

操作諸元要素は、操作要素の何番目の子であってもよい。

操作にそなわる操作諸元は、操作の種別によって異なる。よって、操作要素が持つことのできる操作諸元属性・操作諸元要素は、操作要素名によって異なる。それ以外の属性と子要素は無視される。

なお、ある諸元を諸元属性とするか諸元要素とするかは、一般に次の規則にしたがって決められている。

属性諸元を同名の諸元要素としても無視される。逆もしかり。

サンプルMFMLデータ

段落メタ書式の場合の一例。
<para-if>
   <overset from='frame' priority='top'>
      <para-cure>
         <horizontal limit='50' step='5' undo='no'>
         </horizontal>
         <size>
            〜
         <size>
      </para-cure>
   </overset>
   <miss>
      〜
   </miss>
</para-if>



Copyright (C) 2007-2008 UNIT, Ltd. All Rights Reserved.