
目次
MacSgmls ▼ 実行環境 ▼ 使用許可と保証の放棄 ▼ 作者 ▼ 版の表示について ▼ 参考資料 ▼ 開発環境 ▼ 謝辞 ▼ 制約及び不具合 ▼ 修正記録 ▼ その他 ▼ SGML文書実体の管理 ▼ システム宣言 ▼ SGML宣言 ▼ アップルメニュー ▼ ファイルメニュー ▼ 条件設定 ▼ オプション ▼ 外部実体の参照 ▼ 公的公開識別子 ▼ 実体名,記法名,又は文書型名 ▼ 外部データ実体データ内容記法 ▼ システム識別子 ▼ トレース ▼ 構文解析 ▼ 識別された外部実体 ▼ Sgmlsパラメタ記録 ▼ テキストファイルの編集 ▼ 編集メニュー ▼ MacSgmlsの配布 ▼
MacSgmlsは,検定用のSGML構文解析系で,国際標準の文書記述言語SGML(ISO 8879,JIS X 4151)に準拠したSGMLシステムです。
MacSgmlsは,複数のファイル上にあるSGML文書実体を構文解析,検定し,要素構造情報集合(Element Structure Information Set--ESIS)の単純な表現で出力します。
これは要素構造を扱うSGML準拠アプリケーション(例えば,Perl)で処理できます。
文書実体は別々のファイルに分けてもかまいません。例えば,SGML宣言,文書型定義,文書実現値集合をそれぞれ別のファイルに分けることができます。
MacSgmlsの条件設定では,文書実体についての情報をあらかじめ指定できます。
ファインダにおいてMacSgmlsのアイコンに文書実体をドロップすると,MacSgmlsはそれらを読みます。
MacSgmlsは,簡単なテキストエディタを持っています。
MacSgmls 1.1版は,次のような環境で実行します。
機 種 Macintosh 68Kシリーズ Macintosh PPCシリーズ システム J1-7以上 フォント システムフォント(Osaka) 等幅明朝(日本語表示の場合,インストールされていれば使用します) Monaco(英語表示の場合,インストールされていれば使用します)
SGML利用者グループ(SGMLUG) SGML構文解析系用資料
SGML利用者グループ(以下,SGMLUGと記す)は,あらゆる利用者に対して次のことを保証する。
ARCSGMLは,Charles F. Goldfarbさんが作製しました。
Sgmlsは,ARCSGMLを元にしてJames Clarkさんが作製しました。
Sgmls-Jは,Sgmlsを元にして土屋 哲さんが作製しました。
MacSgmlsは,Sgmls-Jを元にして私(岸 和孝)が作製しました。
MacSgmlsは,Sgmls 1.1-J0.2を元に作製しましたが,版の表示についてはMacintoshで日本語と英語の両方で操作できるようにしたことから,MacSgmls 1.1.1,MacSgmls 1.1.2,...とします。
MacSgmls 1.1版は,次のような開発環境で作製しました。
機 種 Macintosh PowerBook 520C Macintosh Centris 660AV システム J1-7.5 言 語 C コンパイラ THINK C 7.0 エディタ Edit7 1.0b3 ダンプ HexEdit 1.0.3 符号系変換 Henkan 2.4.0 属性変更 File Buddy 3.1 圧縮伸長 MacLHA 2.13 Compact Pro 1.34 ver.1.1.5以降 機 種 Macintosh PowerBook 5300cs Macintosh PowerBook 550c システム J1-7.5.5 コンパイラ CodeWarror IDE 2.1J
参考資料[1]のSGMLサンプルセットを提供してくれた日本事務機械工業会の実装規約小委員会オフィス文書属性定義WGと,その存在と応用を示唆してくれた日本印刷技術協会の研究調査部の皆さん方に感謝します。
MacSgmlsの機能の大半は,Sgmls 1.1(-J)を翻案したものです。SGML構文解析系用資料を提供してくれたSGML利用者グループと作者の皆さん方に感謝します。
MacSgmlsのテキストエディタ機能は,Symantec Corp.のStephen Z. Steinさんが作製したMiniEdit.c(1993)を翻案したものであり,この説明文表示機能は,Bill Rauschさんが作製したhelp.c(1987)をそれぞれ翻案したものです。作者の皆さん方に感謝します。
この説明文については,参考資料[2][3][4][5][6][7]を翻案しました。著者,訳者の皆さん方に感謝します。
MacSgmlsのコード変換機能(拡張UNIXコードからシフトJISコード)は,入出力まわりにおいては土屋さんの機能をそのまま借用しました。なお,画面表示まわりにおいては,参考資料[8]のソースコードを翻案しました。作者の皆さん方に感謝します。
開発に当たって,開発環境に述べた多くのフリーウェアに助けられました。作者の皆さん方に感謝します。
MacSgmls 1.1版の制約は,次のとおりです。
Sgmls 1.1(-J)が抱えている次のバグは残っています。
その他の不具合にお気づきの方は私(NAG00251@niftyserve.or.jp)へ電子メールでお知らせ下さい。
MacSgmls 1.1.1 1996年6月25日
MacSgmls 1.1.2 1996年7月7日
MacSgmls 1.1.3 1996年8月15日
MacSgmls 1.1.4 1996年11月30日
MacSgmls 1.1.5 1998年7月20日
MacSgmls 1.1版ソースコードは,次のような理由によって,かなりのスパゲッティですので当分公表しないつもりです。ルール違反かもしれませんが,ご容赦下さい。
MacSgmls 1.1版において表示言語を日本語と英語(米語)のいずれかが選べるようにしたのは,ソフトウェア輸入偏重の昨今,少しでもお返しをしたいと思ったからです。
SGML文書実体は, SGML宣言,文書型定義,文書実現値から構成されます。MacSgmlsは一つ以上のファイルに存在するそれらを取り扱えます。
MacSgmlsの条件設定において,文書フォルダへのアクセスパス,SGML宣言のファイル,文書型定義のファイルを指定できます。
構文解析の前に,文書フォルダへのアクセスパスとSGML宣言のファイル名を指定すべきです。
文書実現値が文書型定義ファイルへの参照を含む場合は,条件設定で文書型定義ファイル名を指定できません。
文書実現値のファイル名は,構文解析開始時にダイアログから選択します。
ファインダにおいて,文書実現値をMacSgmlsのアイコンへドロップしても選択できます。
MacSgmlsは,選択した文書実現値の構文解析中に識別子を検出した時に,文書フォルダへのアクセスパスとファイル名テンプレートからファイル名を想定します。
MacSgmlsは,次の段階を通じて,いくつかのファイルを一つの実体として扱います。
MacSgmlsのシステム宣言は次の通りです。
<!SYSTEM "ISO 8879:1986" --文書文字集合-- CHARSET --基本文字集合-- BASESET "ISO 646-1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0" --記述文字集合部分-- DESCSET 0 128 0 --容量集合-- CAPACITY PUBLIC "ISO 8879:1986//CAPACITY Reference//EN" --機構利用-- FEATURES --マーク最小化機構-- MINIMIZE DATATAG NO --データ文字が同時にタグとして機能してもよい-- OMITTAG YES --幾つかのタグが全く省略されてもよい-- RANK NO --要素の位がタグから省略されてもよい-- SHORTTAG YES --省略された区切り子,属性指定又は汎用識別子を持つ直タグを使用してもよい-- --LINK機構-- LINK SIMPLE NO --単純連結処理定義の使用を許し,指定した個数を同時に活性にできる-- IMPLICIT NO --暗黙連結処理定義の使用を許す-- EXPLICIT NO --明示連結処理定義の使用を許し,連結処理の最長の連鎖は指定した個数の連結を持つ-- --他機構-- OTHER CONCUR NO --指定した個数の文書型の事例が基本型の事例と同時に現われてもよい-- SUBDOC YES 1 --指定した個数のSGML部分文書実体を一時に開いてもよい-- FORMAL YES --公開識別子を公的公開識別子として解釈する-- --具象構文範囲-- SCOPE DOCUMENT --具象構文-- SYNTAX PUBLIC "ISO 8879:1986//SYNTAX Reference//EN" SYNTAX PUBLIC "ISO 8879:1986//SYNTAX Core//EN" --検定サービス-- VALIDATE GENERAL YES --報告可能マーク誤りを発見し,報告する-- MODEL YES --未確定内容モデルを報告する-- EXCLUDE YES --モデル内で綴りの必須又は選択の状態を変更する排除を報告する-- CAPACITY YES --容量制限を超えたことを報告する-- NONSGML YES --少なくとも一つの非SGML文字の出現を報告する-- SGML YES --SGML宣言の誤りを報告する-- FORMAL YES --公的公開識別子誤りを報告する-- --SDIF能力-- SDIF PACK NO --一つ以上の実体からSDIFデータ列を作成する-- UNPACK NO --SDIFデータ列を構成要素の実体へ分解する-- >
MacSgmlsのメモリ利用状況は,文書が使用する容量集合の機能ではありません。しかし,MacSgmlsは,参照容量集合よりもかなり大きな容量を処理することができます。
選択可能な機能を使用しない文書もサポートされています。例えば,SGML宣言でFORMAL NOが指定されていれば,公開識別子は有効な公的公開識別子である必要はありません。
具象構文の一部を変更することができます。
回避文字番号を変更することができます。
LCNMSTRT(英小文字名前開始文字),UCNMSTRT(英大文字名前開始文字),LCNMCHAR(英小文字名前文字),UCNMCHAR(英大文字名前文字)に8ビット文字を割り当てることができます。この宣言を行うには,構文参照文字セットが次のように宣言されていなければなりません。
BASESET "ISO Registration Number 100//CHARSET ECMA-94 Right Part of Latin Alphabet Nr. 1//ESC 2/13 4/1" DESCSET 0 256 0
実体名およびその他の名前に対して,大文字変換を行うことも,行わないこともできます。
参照区切り子集合が割り当てる短縮参照区切り子がサポートされます。それ以外の短縮参照区切り子はサポートされません。
予約済み名を変更することができます。
使用可能なメモリが十分にある場合は,制限内で数量集合を増加させることができます。
NAMELEN(名前,名前綴り,数,などの長さ)の上限は,239です。
ATTCNT(属性名及び属性定義一覧表中の名前綴りの個数),ATTSPLEN(開始タグの属性指定の正規化長さ),BSEQLEN(短縮参照列中の空文字列の長さ),ENTLVL(実体の入れ子水準),LITLEN(パラメタ字句又は属性値字句の長さ),PILEN(処理命令の長さ),TAGLEN(開始タグの長さ),TAGLVL(開かれた要素の入れ子水準)の上限は,参照限界値の30倍以上です。GRPCNT(内容モデルのすべての水準での内容綴りの総計),GRPGTCNT(モデル群のすべての水準での綴りの総計),GRPLVL(モデル群の入れ子水準)の上限は253です。
NORMSEP(正規化長さを計算するときに,分離子を数える代わりに使用)は変更できません。
MacSgmlsはDATATAG(データタグ)機能をサポートしないため,DTAGLEN(データタグの長さ)とDTEMPLEN(データタグ定規又はパターン定規の長さ)の変更は無意味です。
MacSgmlsではSGML宣言は省略することができます。その場合は,次の宣言が仮定されます。
<!SGML "ISO 8879:1986" --文書文字集合-- CHARSET --基本文字集合-- BASESET "ISO 646-1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0" --記述文字集合部分-- DESCSET 0 9 UNUSED 9 2 9 11 2 UNUSED 13 1 13 14 18 UNUSED 32 95 32 127 1 UNUSED --基本文字集合-- BASESET "ISO Registration Number 87//CHARSET JIS X 0208 Japanese Character Set//ESC 2/6 4/0 ESC 2/4 2/9 4/2" --記述文字集合部分-- DESCSET 128 127 128 255 1 UNUSED --容量集合-- CAPACITY PUBLIC "ISO 8879:1986//CAPACITY Reference//EN" --具象構文範囲-- SCOPE DOCUMENT --具象構文-- SYNTAX --回避番号識別-- SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127 255 --基本文字集合-- BASESET "ISO 646-1983//CHARSET International Reference Version (IRV) //ESC 2/5 4/0" --記述文字集合部分-- DESCSET 0 9 UNUSED 9 2 9 11 2 UNUSED 13 1 13 14 18 UNUSED 32 95 32 127 1 UNUSED --基本文字集合-- BASESET "ISO Registration Number 87//CHARSET JIS X 0208 Japanese Character Set//ESC 2/6 4/0 ESC 2/4 2/9 4/2" --記述文字集合部分-- DESCSET 128 127 128 255 1 UNUSED --機能文字識別-- FUNCTION RE 13 RS 10 SPACE 32 TAB SETPCHAR 9 --名付け規則-- NAMING LCNMSTRT "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ" UCNMSTRT "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ" LCNMCHAR "-." UCNMCHAR "-." NAMECASE GENERAL YES ENTITY NO --区切り子集合-- DELIM GENERAL SGMLREF SHORTREF SGMLREF --予約名利用-- NAMES SGMLREF --量集合-- QUANTITY SGMLREF --機構利用-- FEATURES --マーク最小化機構-- MINIMIZE DATATAG NO --データ文字が同時にタグとして機能してもよい-- OMITTAG YES --幾つかのタグが全く省略されてもよい-- RANK NO --要素の位がタグから省略されてもよい-- SHORTTAG YES --省略された区切り子,属性指定又は汎用識別子を持つ直タグを使用してもよい-- --LINK機構-- LINK SIMPLE NO --単純連結処理定義の使用を許し,指定した個数を同時に活性にできる-- IMPLICIT NO --暗黙連結処理定義の使用を許す-- EXPLICIT NO --明示連結処理定義の使用を許し,連結処理の最長の連鎖は指定した個数の連結を持つ-- --他機構-- OTHER CONCUR NO --指定した個数の文書型の事例が基本型の事例と同時に現われてもよい-- SUBDOC NO --指定した個数のSGML部分文書実体を一時に開いてもよい-- FORMAL YES --公開識別子を公的公開識別子として解釈する-- --応用特有情報-- APPINFO NONE >
ただし,128から254までの文字はDATACHARに割り当てられます。
この範囲内の文字を使用する文書を引き渡す際には,この宣言に,文書文字集合の上半分の正確な記述を追加しなければなりません。ISO Latin-1では,適切な記述は次のようになります。
--基本文字集合-- BASESET "ISO Registration Number 100//CHARSET ECMA-94 Right Part of Latin Alphabet Nr. 1//ESC 2/13 4/1" --記述文字集合部分-- DESCSET 128 32 UNUSED 160 95 32 255 1 UNUSED
MacSgmlsとその関連事項について次の内容を表示します。
説明文の表示フォントは表示言語が日本語の場合に「等幅明朝」になり,英語の場合は“monaco”になります。それらがインストールされていない場合はシステムフォントになります。
Saveボタンを押すと,この説明文全体をHTMLの文書型のテキストとして出力します。
テキストのファイル名は「MacSgmlsJ.htm」(表示言語が「英語」の場合は“MacSgmls.htm”)です。
説明文は次のように表現されます。
<HTML> <HEAD> <TITLE>表題</TITLE> </HEAD> <BODY> <Hn>見出し</Hn> <P>段落 ・・・ <OL> <LI>番号付き箇条書き ・・・ </OL> <UL> <LI>番号なし箇条書き ・・・ </UL> <Hn>見出し</Hn> <P>段落 ・・・ </BODY> </HTML>
条件設定では,次の条件を設定できます。
条件設定で設定した内容はプログラム終了後も保存され,次の起動時においても有効です。この内容の保存はMacSgmlsプログラム自身のリソースを書き換えていますので,いわゆるプレファレンスデータは作り出されません。
次のオプションが指定可能です。
ファイル名テンプレートでは,参照する外部実体のファイル名の形式を複数通り選べます。
ここで,かっこ内の記号は,形式の種類を表わします。
選択されたファイル名の綴りのうち空白“ ”は下線“_”に,斜線“/”はパーセント記号“%”に変換します。
このファイル名テンプレートは,文書実現値が公的公開識別子を参照している場合,“[ 所有者識別子 . ]公開文クラス . 公開文記述 [ . 公開文言語又は公開文指示シーケンス ][ . 公開文表示版 ]”のような形のファイル名を意味します。
さらに次の形式の組み合わせが選べます。
このファイル名テンプレートは,文書実現値が実体名,記法名,又は文書型名を参照している場合,“名前 . 拡張子”のような形のファイル名を意味します。
実体の種類は,次の拡張子で区別します。
| SGML副文書実体 | sgml |
| データ実体 | data |
| 一般文実体 | text |
| パラメタ実体 | parm |
| 文書型定義 | dtd |
| リンク処理定義 | lpd |
トレースでは,構文解析の経過をエラーリストへ記録できます。
トレースは,前書きと文書本体に適用できます。
トレースでは,次の対象が複数通り選べます。
条件設定に基づきSgmlsで構文解析・変換を行います。
ダイアログで実体ファイルを選択します。通常,文書実現値を指定します。
構文解析・変換中は,次の内容を示す進行状況のウィンドウが表示されます。
エラーが検出された場合,「虫印」が表示されます。
構文解析の結果はビープ音の回数でも知ることができます。
| 正常に終了した場合 | 1回鳴ります。 |
| エラーが検出された場合 | 2回鳴ります。 |
| 深刻なエラーが検出された場合 | 3回鳴ります。 |
次の内容を表示します。
「虫印」の外部実体のファイル名は,それが文書フォルダ内に存在していないことを表わします。
この内容は,構文解析を行う度に更新されます。
構文解析中にエラーが検出された場合は,MacSgmlsのアイコンが「虫喰い」に変わります。
次の内容を表示します。
この内容は,構文解析を行う度に更新されます。
構文解析中にエラーが検出された場合は,MacSgmlsのアイコンが「虫喰い」に変わります。
テキストファイルに対して次の処理が選択できます。
テキストの表示フォントは表示言語が日本語の場合に「等幅明朝」になり,英語の場合は“monaco”になります。それらがインストールされていない場合はシステムフォントになります。
なお,32キロバイト以上のテキストファイルは扱うことができません。
編集メニューでは,テキストに対して次の処理が選択できます。
(1998年7月記)