EDoMaEは以下の要求から開発しました。
このため、以下のように考えて設計しました。
これらを以下のようにして実現しました。
EDoMaEはLinux上で、Cを使って開発されています。XMLのパーザとしては、 libxml2を使っています。
文書表現としてSmartDocを使っ ていますが、表示のためのレンダリングは、独自に書いたプログラムでリアル タイムに行っています(見た目がSmartDoc臭いのは、SmardDocのスタイルファイ ルの流用だからです)。
SmartDocのタグのうち、以下の ものが使用可能です。ただし、サポートしているタグでも、全ての属性に対応 しているわけではありません。
オリジナルのSmartDocではfigureの図は、TeXの時にはeps, HTMLの時には pngがないと表示されません。EDoMaEでは、epsだけが定義されている場合 には、適当な大きさに展開して表示します。また、それでは見難い場合の ために、ズームもできるようになっています。図はepsで入れるのが良い でしょう。
属性については以下の拡張がされています。この拡張については、 ddocprocを走らせることにより、オリジナルと互換性のあるsdoc文 書に変換されます。
| 属性 | 意味 | デフォルト |
|---|---|---|
| filter | 入力フィルタの指定。src属性で指定されたファイルにこのフィ ルタを適用してから読み込む。 | - |
filterは
フィルタクラス ':' [ 入力タイプ ] ':' [ フィルタオプション ]
という形式の文字列で指定します。フィルタクラスには、
外部プログラムを起動してその結果を取り込みます。フィルタオプション にはコマンドラインを指定します。
XSLTで処理した結果を取り込みます。フィルタオプションには、xslファ イルを指定します。
があります。入力タイプには、
結果をddoc/sdoc文書だとみなして処理
結果をddoc/sdoc以外のXML文書だとみなして処理
結果をテキストだとみなして処理
XSLTの出力はDOMツリーが直接取り込まれるため指定は不要
といったものがあります。
以下のタグが使用可能です。
EDoMaE固有情報のヘッダです。template要素とowner 要素を含みます。
HTMLにレンダリングする時の下敷となるファイルを指定します。ここには、 HTMLの要素のうち、<head>に含まれるものを記述します。
| 属性 | 意味 | デフォルト |
|---|---|---|
| file | 下敷ファイル名 | MetaInfoの記述に従う |
ファイルの所有者のユーザ名
| 属性 | 意味 | デフォルト |
|---|---|---|
| user | ユーザ名 | - |
参照権限の指定。特定の利用者が見えたり見えなかったりする。 infoとbodyを含む。
文書の本体であることを示す。
permitの情報ヘッダ。denyまたはallowを含む。
有効な利用者を指定する。
| 属性 | 意味 | デフォルト |
|---|---|---|
| user | ユーザ名 | - |
無効な利用者を指定する。
| 属性 | 意味 | デフォルト |
|---|---|---|
| user | ユーザ名 | - |
この名前空間はGnumeric のテーブルを表現するものです。EDoMaEでは、Gnumericをtableとして認識し て表示します。
以下のタグが使用可能です。
外部ソースを特に何も加工せずに取り込みます
編集を指定します。編集時の入力方法は、利用者の環境設定で指定されたもの を使うようになっています。
編集には「編集」と「追加」があります。
「編集」の場合、指定された形式では正しく表現できない要素を含んだ範 囲を編集しようとしても、編集ボタンは表示されず、編集はできません。
「追加」は入力された情報が追記されます。
| 属性 | 意味 | デフォルト |
|---|---|---|
| class | styleのクラス | madoc |
権限の設定には、
入力したものを外部ファイルに保存します。表示する時には指定している ファイルを取り込みます。
| 属性 | 意味 | デフォルト |
|---|---|---|
| class | styleのクラス | madoc |
| file | 外部ファイル名 | - |
ファイルのアップロードをします。
| 属性 | 意味 | デフォルト |
|---|---|---|
| class | styleのクラス | madoc |
| name | ホストのファイル名 | -(ファイル名入力フィールドが表示される) |
プログラムの実行を行います。
| 属性 | 意味 | デフォルト |
|---|---|---|
| class | styleのクラス | madoc |
| type | 入力領域のタイプ | text(テキストの入力領域) |
| exec | 実行するプログラム | -(何も起きない) |
execタグでtypeをxmlにした時に生成するXMLのテンプレートを定義します。
この中には任意のXMLが記述できます。後述するformからの入力を参照するには、 formの中に記述する入力の要素に名前をつけ、それを参照するように記述します。 名前から値を参照するには、
$名前
のように、名前の前に$を前置します。これは任意の場所で使えますが、 生成されるXMLの正当性のチェック等は行われません。
execタグでtypeをxmlにした時にデータを入力する領域の内容を定義します。
formの中で使われる入力要素です。1行の文字列を入力します。
| 属性 | 意味 | デフォルト |
|---|---|---|
| size | 領域の大きさ | 10 |
| maxlength | 領域に入る最大の大きさ | sizeと同じ値 |
| value | 最初から入力済みになっている文字列 | なし |
| visible | 入力を表示するか否か | true(表示する) |
| name | 名前 | _id |
formの中で使われる入力要素です。複数行の文字列を入力します。
| 属性 | 意味 | デフォルト |
|---|---|---|
| rows | 行数 | 4 |
| cols | 列数 | 80 |
| name | 名前 | _id |
formの中で使われるイベント発生の要素です。
| 属性 | 意味 | デフォルト |
|---|---|---|
| event | 発生するイベント | exec |
| face | ボタンに表示される文字列 | event |
発生したイベントがどういった意味になるかは、プログラムに依存します。
execは
クラス [ ':' コマンド文字列 ]
という形式の文字列で指定します。クラスには、
入力となるXMLをファイルの保存した後、外部プログラムを起動します。起動は、
コマンド文字列 イベント文字列 出力したXMLファイル名
のようになります。
指定したXMLファイルに追加します。「コマンド文字列」の部分にXML ファイル名を指定します。
コマンド文字列やフィルタオプションには、
$名前
のように、名前の前に$を前置してやることにより、システムの持っている変 数を参照することが可能です。
| 名前 | 使える場所 | 意味 |
|---|---|---|
| inputfile | /core/madoc | 実行されるコマンドの入力となるファイル名 |
| outputfile | filter | 実行されるコマンドの出力となるファイル名 |
| srcfile | /core/madoc | その文脈で指定されたsrc |
| event | /core/madoc | formのeventで指定された文字列 |
| oid | どこでも | 今見ている文書のoid |
| _sesid | どこでも | セションを識別する文字列 |
| user | どこでも | 利用しているユーザ名 |
この他、formの中で指定したname=の変数は全て使用可能です。
2007-06-17 Masami Ogoshi <ogochan@nurs.or.jp> * src/view.c (ViewObject): XHTML化 * tags.c (_Head, _Body, _eBody, _eHtml): ヘッダを出さない処理 * src/storage.c (ImportFile): input.c/GetFileBody()を使うようにした * src/ddoc.c (LoadTemplateHeader): <body>を含んだテンプレートが作れるようにした。これにより、任意の位置に処理結果が埋め込める * src/exdoc.c (SetDefault): セションファイルを作らないオプション追加(通常はなくても困らない) * src/ddocproc.c (SetDefault): MyNameを指定可能にした。ヘッダ等を出力しないオプションをつけた 2007-03-22 Masami Ogoshi <ogochan@nurs.or.jp> * 全体に最新にし、コードを整理した。amd64に対応した 2005-12-07 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (LoadSource): ddoc/sdoc文書は再帰的に読み込むようにした 2005-11-30 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (ReFormatDoc): タグの掃除をやめた(バグ大杉) * 中村さんのパッチを吸収(Alpha CPUで動くらしい) * src/xsdoc.c (__FigureImg): TeX用の処理を追加した * libmondaiを使うようにした(分離は諦めた) * src/gnumeric.c: gnumericの表にlongtable, multicolumnを使うようにした 2004-07-11 Masami Ogoshi <ogochan@nurs.or.jp> * src/ddoc.c (_Permit): 権限のタグを用意した * src/load.c (LoadDDoc): フィルタが有効になるようにした 2004-06-21 Masami Ogoshi <ogochan@nurs.or.jp> * src/ddoc.c (_Login): 途中でloginするためのタグをつくった (ExpandMacro): 時間に関するマクロ文字追加 2004-06-14 Masami Ogoshi <ogochan@nurs.or.jp> * src/ddoc.c (ParseOp): フィルタのコマンドライン処理の一元化 2004-06-09 Masami Ogoshi <ogochan@nurs.or.jp> * src/xsdoc.c (InitializeSDoc): figureで読み込みを間違えるbug fix * src/storage.c: 履歴管理を制御するようにした(defaultは履歴を取ら ない) * src/load.c (ParseText): 空白の後の文字を落とすbugをfix 2004-06-08 Masami Ogoshi <ogochan@nurs.or.jp> * src/xmadoc.c (OpExec): プログラムの実行とXML生成機構をつけた 2004-05-21 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (_Xslt): XSLTを組み込んだ 2004-05-19 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (LoadSource): 読み込みを汎用手続き化した (NewFilter): 読み込みにフィルタを設けた 2004-05-18 Masami Ogoshi <ogochan@nurs.or.jp> * src/exdoc.c (CreateAnonymousSession): セションを持っていない時の 処理を直した 2004-05-17 Masami Ogoshi <ogochan@nurs.or.jp> * src/cgi.c (PutHTML): domainの間違いを直した 2004-05-15 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (ExpandTab): untabをつけた(ないとTeXで困る) * src/storage.c (CheckCoding): codesetのデフォルトをiso-2022-jpにした 2004-05-14 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c (LoadSource): srcがどこでも書けるようにした 2004-05-13 Masami Ogoshi <ogochan@nurs.or.jp> * src/xsdoc.c, src/gnumeric.c : TeX出力に対応 2004-05-09 Masami Ogoshi <ogochan@nurs.or.jp> * src/load.c: 読み込み時にXMLを綺麗にする処理を加えた(内部的にはほ ぼ完全なXMLとして処理ができるはず) 2004-05-04 Masami Ogoshi <ogochan@nurs.or.jp> * src/gnumeric.c: gnumericのXMLをtableとして表示できるようにした 2004-04-30 Masami Ogoshi <ogochan@nurs.or.jp> * src/xmadoc.c (AccCheck): 権限をMetaInfoから継承するようにした(一々 指定するのは面倒だから) 2004-04-28 Masami Ogoshi <ogochan@nurs.or.jp> * 公開(20040428) * src/ddoc.c (DoDDocMain): モジュールの独立性を上げた 2004-04-22 Masami Ogoshi <ogochan@nurs.or.jp> * src/xmadoc.c (_Include): include要素追加 2004-04-21 Masami Ogoshi <ogochan@nurs.or.jp> * src/xmadoc.c (_Change): class属性の追加, upload要素追加 2004-04-18 Masami Ogoshi <ogochan@nurs.or.jp> * src/xsdoc.c (_Figure): pngがなくても表示できるようにした(拡大もできていい) * src/ddoc.c (SetId): 編集のidを自動的につけるようにした 2004-04-17 Masami Ogoshi <ogochan@nurs.or.jp> * src/storage.c (SaveMetaInfo): 雛型情報を入れるようにした * src/opMenu.c: 編集画面を元のフレームの中にした(いろいろ不便なため) 2004-04-16 Masami Ogoshi <ogochan@nurs.or.jp> * src/struct.h: exdoc.hから分離 * src/ddoc2sdoc.c: 新規追加 2004-04-12 Masami Ogoshi <ogochan@nurs.or.jp> * src/xmadoc.c (ParseXML): XMLでの入力に対応 2004-04-09 Masami Ogoshi <ogochan@nurs.or.jp> * src/ddoc.c : editタグ(指定範囲の編集)。アクセスリストの処理 * src/xiki.c : コマンドラインからの実行。ユーザ指定 2004-04-08 Masami Ogoshi <ogochan@nurs.or.jp> * src/sdoc.c: (Pure)SmartDocへの対応開始(そこそこ動く) 2004-04-04 Masami Ogoshi <ogochan@nurs.or.jp> * src/xiki.h: 実行権についての設定を追加 2004-03-28 Masami Ogoshi <ogochan@nurs.or.jp> * src/storage.c (NewAccList): アクセス管理のしかたを簡略化した 2004-03-23 Masami Ogoshi <ogochan@nurs.or.jp> * src/xiki.c (ShowUser): 利用者情報の管理 * src/storage.c (SaveUserInfo): 利用者情報の管理 2004-03-21 Masami Ogoshi <ogochan@nurs.or.jp> * src/opNode.c (OpChangeNodeName): ノードに名前がつけられるようにした 2004-03-20 Masami Ogoshi <ogochan@nurs.or.jp> * src/auth.c: 認証を別プログラムにしてshadowにも対応した 2004-03-19 Masami Ogoshi <ogochan@nurs.or.jp> * src/xiki.c (Main): name -> oid(nameは論理的な名前で使うべき)