Documentation 5. アプリケーション![]() |
![]() ![]() |
webMathematica のリクエストの典型的な結果はHTMLページです.HTMLページには画像の参照が含まれることがあります.webMathematica で使えるコマンドは,このようなタイプのリクエストが簡単にできるように設計されています.しかし,例えばMathematica ノートブックやTeXの文書のように,これ以外の形式のものを返せると大変便利です.このような形式のものを生成するためのMathematica コマンドはExportとExportStringです.ブラウザにこれらの形式のものが返されると,その形式のための特別な機能を提供するヘルパーアプリケーションが起動されることがよくあります.このセクションでは,webMathematica を使って一般的な内容を異なった形式でどうやって返すかを説明します.この機能は2つの重要なコマンドMSPReturnとMSPURLStoreに基づいています.
MSPスクリプトがMSPReturnを評価すると,スクリプトのプロセスは中止され,第1引数が直ちに返されます.第2引数はコンテントタイプを指定します.この例ではノートブックオブジェクトが返され,結果はapplication/mathematicaと設定されています.
MSPReturn[ "Notebook[Cell[\"Hello\", \"Title\"]]", "application/mathematica"]
HTTPクライアントの種類によってはヘルパーアプリケーションを起動するコンテントタイプが使えます.しかし,リクエストに関連したファイル名が必要なクライアントもあります.この目的のためにMSPReturnはHTTPヘッダのファイル名を設定する第3引数を取ります.
MSPReturn[ "Notebook[Cell[\"Hello\", \"Title\"]]",
"application/mathematica", "notebook.nb"]
しかしInternet Explorerのように,HTTPクライアントによってはこれが2つのOpenあるいはSaveダイアログボックスを開いてしまうという好ましからざる結果を生むこともあります.ほとんどのクライアントはMSPReturnを含むスクリプトのリクエストに適切な拡張子を持ったファイル名が付いているとはるかにうまく機能します.webMathematica の拡張子は.jspでなければならないので,これは不可能です.しかし,適切な拡張子を持ったURLを生成することなら可能です.この機能はMSPURLStoreが提供しています.
MSPURLStoreはMSPShowのようなコマンドで生成された画像を保存する,webMathematica が提供するメカニズムを使います.これは実際にサーバに引数を保存し,この引数を参照するURLを返します.
Needs["MSP`"]
m=DisplayString[Graphics[Line[ {{0, 0}, {1, 1}}]], "JPEG"];
MSPURLStore[m, "image/jpeg"]
"/webMathematica/MSP?MSPStoreID=FileNameBase_186159533&MSPStoreType=image/jpeg"
このURLはMSPURLStoreを含んでいたリクエストと相対的な関係にあります.これは独自の識別子とコンテントタイプの記述を持っています.サーバは貯えられた情報を着実に削除していくので,この情報はサーバに恒久的には残りません.このメカニズムは特にプラグインやアプレットの入力を準備するのに便利です.
MSPURLStoreはファイル名を設定するために第3引数を取ることもできます.このファイル名は返されるURLに入れられます.例えば,notebook.nbのファイル名が例の中で設定されています.
MSPURLStore[ "Notebook[Cell[\"Hello\", \"Title\"]]", "application/mathematica", "notebook.nb"]
"/webMathematica/MSP/notebook.nb?MSPStoreID=FileNameBase_682425268&MSPStoreType=application/mathematica"
スクリプトの例Examples/ContentStore.jspにMSPURLStoreの使用例があります.
MSPPageOptionsのContentTypeオプションを使って任意のページのコンテントタイプを設定することができます.これは一般にページの一番上に置かれます.次の例ではページの戻り型をMathMLにする方法を見てみましょう.
<msp:evaluate>
MSPPageOptions[ ContentType -> "text/mathml"]
</msp:evaluate>
<msp:evaluate>
MSPFormat[ Integrate[ 1/(1-x^3), x], StandardForm, RawMathML]
</msp:evaluate>
もちろんこれはMSPReturnに大変似ています.違いは,これがページ全体を返すのに対しMSPReturnは第1引数しか返さない点です.
![]() ![]() |