mikeo_410


 MathMLのDTD

  「DTDパーサー」を使って調べてみます。
  MathMLのDTDは1つではなく、種類があるようです。
  大別すると、実際にWEBページの作成に使用するものと、MathMLの定義としてのDTDです。
  前者は、"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"  のように、XHTML内にMathMLを置く際に使用されるものです。このDTDファイルは1万行に近い大きなものです。良くわかりませんが、XHTMLで使用されるタグなどの宣言も含まれるもののようです。
  後者は、複数のファイルを圧縮した形式で配布されています。これは、3種類あって、バージョンに応じたもののようです。
  最初の版は、1つの .dtd  と、複数の .ent ファイルから構成されています。.ent ファイルは、文字コードとニモニックの対を宣言しています。これは .dtd にインクルードされますが、DTDの記述中で参照するためではなく、ユーザがニモニックで文字を参照できるように定義しておくのが目的のようです。
  その後の版には、.mod ファイルが1つ含まれています。
  MathMLについて調べるので、圧縮ファイルの方を調べます。ボリュームの大半を占める  .ent ファイルは、構文の解釈とは無関係なようで、構文と、文字のニモニックを分けて調べます。

MathML DTD  の宣言 MathMLの文字

DTDの内容の表示

  DTDからわかることは以下の3つでした。

  1. 要素名と、要素間の階層構造
  2. 要素と、記述可能な属性名と属性値
  3. 文字の実体参照の定義

  上の図をクリックすると、Silverlightアプリケーションが起動します。
  左は、3項目について、DTDの内容を表示します。起動時には、MathML3のDTDを開いています。
  左は、文字の実体参照の定義を表示するもので、.entファイル単位に開くことができます。

  要素名、属性名の上にマウスポインタを持っていくと、直下の宣言を表示します。
  クリックすると新たなウインドウを開いて、宣言を表示します。
  PEReferenceを使って階層的に宣言されている状態を順次開きます。
  すべて展開して開くことはしていません。すべて開いてから解析するのと結果が異なることも考えられますが、途中の階層に付与した名前にも意味があると考えました。
  文字の実体参照は、右ボタンメニューでクリップボードにコピーできます。

 文字の実体参照について

  文字の実体参照は、DTDの大きな部分を占めますが、MathMLの構文の定義では参照されていません。
  <mml:mo> &OverBar; </mml:mo>のように、MathMLを記述する際の便宜のための宣言で、独立しています。
  MathMLの記述で使わないならすべて削除しても全く影響のないものです。

  1. 文字の実体参照の宣言は、MathMLのDTDによってかなり異なっています。
    実体参照で記述したMathMLの表示はDTDによって異なる字形に割り当てられることが起きます。
    たとえば、&harts; とした場合、U+2661(♡) と U+2665(♥) を割り当てた版があり、同じハート形でも、塗りつぶしか白抜きかが異なっています。
  2. MathML3では解消しているようですが、PUA(Private Use Areas)が使われていて、このフォントをどうにかしないと表示できないものがあったようです。
  3.  mathml2.tgz では、.ent がフォルダで分類されています。
    mathml、html、iso8879、iso9573-13 です。
  4. ワードには、文字の実体参照を含むMathMLを数式として貼り付けられません。
  5. ワードや数式入力パネル、Microsoft Mathematics が出力するMathML記述には文字の実体参照はありません。

要素の定義について

  前述のプログラムの表示では、要素を分類してカラーリングしています。
  3分類で、EMPTY、(#PCDATA)のみ、その他です。
  MathML3の場合、193要素あるうち、63要素だけが階層構造を持ち、他はノードの終端となる要素です。

属性の定義について

  属性も色を付けています。これは、属性リストのパターンの上位4パターンと、その他の5分類をしています。
  MathML3の場合、属性リストは182あり、193要素のうち、11要素が属性リストを持ちません。

属性リストを持たない要素
要素名 備考
bvar
condition
domainofapplication
fn
logbase
lowlimit
momentabout
reln
sep
uplimit

  182要素のうち、125要素が同じ属性を持ちます。個別に見る必要があるのは 57要素です。


mikeo_410@hotmail.com