MathMLサンプル集の表示の仕組み
MathMLサンプル集がMathML数式とコードを表示する仕組みについて説明します.
ファイルの構成
MathMLサンプル集は次のファイルから構成されています. なお, これらはMathMLサンプル集(MathMLコア版)のものです. MathMLサンプル集(MathJax版)も概ね同じようなファイルから構成されています.
ファイル名 | 説明 |
---|---|
index.html | フレームを表示するHTMLファイル. |
contents.html | 目次となるHTMLファイル. |
000xxsrc.xml | dissrc.xsl を呼び出し, 000xxexp.xml を表示したり, コードを表示したりするための情報が記載されたXMLファイル.xx には数字が入ります. |
000xxsrc.xml | 数式を表すMathMLファイル |
dissrc.xsl | 000xxexp.xml を表示したり, コードに変換したりするためのXSLTファイル |
src.dtd | 000xxsrc.xml の書き方を表すDTDファイル |
rplent.js | ユニコード文字を実体参照に変換するための, dissrc.xsl から呼び出されるJavaScriptファイル |
表示処理の流れ
目次の項目をクリックしたときに, MathML数式とコードが表示される処理の流れは次の図のとおりです.
- 項目をクリックすると,
フレームsrc
に000xxsrc.xml
を表示する. 000xxsrc.xml
がdissrc.xsl
を呼び出す.フレームsrc
に000xxexp.xml
をコードに変換して表示する.load
関数を作成し, 読込み時に呼び出す.load
関数がフレームexp
に000xxexp.xml
を表示する.
dissrc.xslによる具体的な変換処理
呼び出されたdissrc.xsl
によって, 000xxsrc.xml
が変換される具体的な処理について説明します.
上記の000xxsrc.xml
は, dissrc.xsl
によって次のように変換されます. なお, この変換後のコードは, 読みやすいように改行位置を調整しています.
変換後のコードについて説明します.
(1)で, rplent.js
を読み込みます.
(2)は, load
関数を宣言しています. load
関数の中身としては, まず, (3)でフレームexp
に000xxexp.xml
を表示します. 次に(4)でreplaceentity
関数を呼び出して, <>"&といった特殊文字を名前付き文字参照に書き換えます. 最後に, 順次(5)のreplavemathentity
関数を呼び出して, 1つ目の引数の文字コードの文字を, 2つ目の引数の数値文字参照に書き換えます. この関数は, 000xxsrc.xml
の全てのent要素の分作成されます. replaceentity
関数もreplavemathentity
関数もrplent.js
で定義された関数です.
(6)で, 読込み時にload関数を呼び出します.
以上が変換後のコードの説明になります.