
James Clark氏が開発したSP−nsgmlsは,国際標準ISO 8879(文書記述言語)に適合したSGMLシステムであり,SGML文書を解析・検証し,その要素構造情報集合(ESIS)と呼ばれる単純なテキスト表現を出力します。
nsgmlsは,sgmlsの機能拡張版で,各種のUNIXに加えて,Windows95,WindowsNT,MS-DOS,Solaris(i386,sparc),OSF/1 V3.2(DEC Alpha),OS/2,Linux(i386)といったOSで実行可能です。
nsgmlsを使ったSGML文書処理のワークフローは,図1のようになります。
|
▲図1 SGML文書処理のワークフロー
ここでは,Windows95におけるnsgmls(Win32版)の利用について説明します。そのバイナリーとソースコードは“ftp://ftp.jclark.com/pub/sp/win32/sp1_2_1u.zip”からダウンロードできます。
nsgmlsのコマンドラインは,次のとおりです。
nsgmls [ -BCdeglprsuv ] [ -alinktype ] [ -bbctf ] [ -ccatfile ] [ -Ddirectory ] [ -Emax_errors ] [ -ferrfile ] [ -iname ] [ -ooutput_option ] [ -trastfile ] [ -wwarning_type ] [ docfile... ] [ > esisfile ]
nsgmlsを起動するには,スタートメニュー→プログラム(P)→MS-DOSコマンドと選んでMS-DOSウインドウを開き,コマンドで指示します。又は,この形式に基づいたバッチファイルを用意しておいてドラッグ・アンド・ドロップを行ないます。
nsgmlsのマニュアルの要約は,次のとおりです。
nsgmlsは,SGML文書docfile[図2を参照]を解析・検証し,その要素構造情報集合(ESIS)のテキスト表現[図3を参照]をファイルesisfileへ出力します。一つ以上のファイル名docfileが指定されると,対応している実体は,文書実体を形作るために連結されます。文書実体は,幾つかのファイルに散らばっているかもしれません。例えば,SGML宣言と文書型定義と文書実現値は各々別々のファイルになっていることが多いでしょう。
<HTML> <HEAD> <TITLE>Jade - JamesのDSSSLエンジン</TITLE> </HEAD> <BODY BGCOLOR="ffffff"> <H1>Jade - JamesのDSSSLエンジン</H1> <P> James Clark著<BR> ・ ・
▲図2 SGML文書
AVERSION CDATA -//W3C//DTD HTML 3.2 Final//EN (HTML (HEAD (TITLE -Jade - JamesのDSSSLエンジン )TITLE )HEAD ABACKGROUND IMPLIED ABGCOLOR CDATA ffffff ATEXT IMPLIED ALINK IMPLIED AVLINK IMPLIED AALINK IMPLIED (BODY AALIGN IMPLIED (H1 -Jade - JamesのDSSSLエンジン )H1 -\n AALIGN IMPLIED (P -James Clark著 ・ ・
▲図3 ESIS
例えば,バッチファイルは,一つの文書実現値のファイルだけをドラッグ・アンド・ドロップするであれば,次のようになるでしょう。
CD C:\NSGMLS\BIN NSGMLS -f%1.ERR EUCJPN.DCL HTML32.DTD %1 > %1.ESI
ここで,“EUCJPN.DCL”はSGML宣言のファイル名,“HTML32.DTD”は文書型定義のファイル名,“.ERR”はエラーファイルの拡張子,“.ESI”はESISファイルの拡張子とします。
例えば,このバッチファイルに文書実現値ファイルSAMPLEをドラッグ・アンド・ドロップすると,ESISファイルSAMPLE.ESIが得られます。もしエラーが生じればエラーファイルSAMPLE.ERRが得られるでしょう。
次のオプションが利用できます。
-alinktype
連結型linktypeを活性にします。
-bbctf -bencoding
このオプションは,出力のために使用される符号化encodingを決定する,とマニュアルに記載されていますが,Win32版の現在のバージョンではシフトJIS符号系に固定されていますので,指定しても無効です。
-B
コマンドラインで別々に指定された各docfile…を連結しないで,解析します。
-ccatfile
対応表公開識別子と実体は,カタログ記述ファイルcatfileを介して参照されます。
-C catfile
catfile…は,カタログ記述ファイルを指定します。
-Ddirectory
文書実体ファイルのためのディレクトリーdirectoryが探されます。
-e
エラーメッセージにおいて,開いている実体を表示します。
-Emax_errors
nsgmlsは,エラーがmax_errors個生じると終了します。
-ferrfile
エラーをファイルerrfileに出力します。
-g
エラーメッセージにおいて,開いている要素の共通識別子を表示します。
-iname
<!ENTITY % name "INCLUDE">がSGML文書実体における文書型宣言部分集合の開始点において繰り返すとみなします。
-ooutput_option
次のoutput_optionによる追加情報をESISに出力します。
entityENTITY属性かENTITIES属性で参照された又は名付けられたデータ又は副文書実体だけでない,すべての一般実体についての定義を出力します。
id識別子宣言された値がIDである属性を区別します。
line現在の行番号とファイル名を与えたLコマンドを出力します。
included含まれた部分要素のために,iコマンドを出力します。
empty終了タグを持てない要素のために,eコマンドを出力します。
notation-sysidシステム識別子がその表記法のために生成できた場合は,Nコマンドの前のfコマンドを出力します。
nonsgml固定的な文字集合モードにおいて,非SGMLデータ文字のためにエスケープシーケンス“\%”を出力します。
-p
前書きだけを解析します。
-s
出力を抑えますが,エラーメッセージは印刷されます。
-trastfile
ISO/IEC 13673:1995によって定義されるRASTをファイルrastileへ出力します。
-v
バージョン番号を表示します。
-wwarning_type
警告とエラーを次のwarning_typeで制御します。
mixed#PCDATAを許さない混合した内容モデルについて警告します。
sgmldeclSGML宣言における種々の曖昧な構造について警告します。
shouldISO 8879にある種々の勧告に文書が従っていないことについて警告します。
default省略された参照について警告します。
duplicate重複した実体宣言について警告します。
undefined定義されていない要素について警告します。
unclosed閉じていない開始タグと終了タグについて警告します。
empty空の開始タグと終了タグについて警告します。
net簡略可能な開始タグと無効の終了タグについて警告します。
min-tag最小化された開始タグと終了タグについて警告します。
unused-map使用していない短縮参照対応表について警告します。
unused-param文書型定義で定義されているが,使用されていない引数実体について警告します。
notation-sysidいかなるシステム識別子も生成できなかった表記法について警告します。
all通常避けられるべきであった条件について警告します。
no-idrefそのIDを持たない要素のID参照値をエラーとしません。
no-significant参照具象構文で重要な文字でないとした文字がSGML宣言における表記で生じる場合,エラーとしません。
no-valid定義されない要素型又は定義されない属性のために見逃した文書型定義をエラーとしません。
(1998年1月記)