
SGML/XML何でも相談室では,SGMLやXMLに関わる皆さんからの質問にお答えします。
皆さんからの投稿を募集します。営業,企画,プリプレスなどの分野を問いません。「SGMLやXMLのこんなところが分からない」と言う方は,
相談室までどしどしご質問をお寄せ下さい。
今まで皆さんから寄せられた質問とその回答を次にまとめました。
索引
CSSとは? ▼ SGMLとは? ▼ SGMLの最初は何から始めたらよいか? ▼ SGMLの印刷業界における具体的な使用方法は? ▼ SAE J2008 DTDの解説書はあるか? ▼ 医薬品添付文書のSGML化とは? ▼ 回避文字番号とは? ▼ WindowsNTでのNSGMLSのエラーについて ▼ SGML文書からWord文書への変換について ▼ 項目別検索について ▼ ESISデータに円印が混じるのはバグか? ▼ SGML→HTMLとDTPは可能か? ▼ SGML化でコストは低減できるか? ▼ NSGMLS+SGMLFORMはJADEより便利か? ▼ 同じタグ名で複数のデータを出力したい場合のDTDは? ▼ SgmlFormがうまく動かないが,バグか? ▼ XMLに取り組むべきか? ▼ SGML文書でExcelのデータを表示したいのだが? ▼ テキストデータをSGMLに簡単に変換するソフトはあるか? ▼ SGMLタグの入れ子は可能か? ▼ SGMLでは下線を含んだ名前は許されないのか? ▼ SGMLの文章をJavaで読込むことは可能か? ▼ SGML文書のリンクにURLを記述できるか? ▼ なぜXMLが必要なのか? ▼
Q. JAGATのホームページでのCSSとは,何ですか?
A. CSSとは,Cascading Style Sheet(段階スタイルシート)の略で,HTMLのタグの機能拡張です。現在CSS1の仕様が実現されています。
CSSは,具体的に,見出しや段落の表示の仕方を指定するもので,HTMLコンテンツの中に含めることもできますし,独立したファイルで与えることもできます。
今までのHTMLのタグは表示が固定的でしたが,CSSを組み合わせることによって,送り手が意図する表示が可能になります。つまり,より印刷風のウェブが実現できるようになります。
日本規格協会から技術報告書「段階スタイルシート水準1(CSS1)」が刊行されています。
CSSは,動的な表示を意図したDynamic HTMLとは違いますので,混同しないように注意して下さい。
Q. 初歩的な質問ですが,「SGMLとは何ぞや?」から説明して下さい。
A. 申し訳ないのですが,SGMLをここで手短に説明することはできません。
The SGML Pageの「SGML入門」を読むか,または「参考図書」に入門書をいろいろ紹介してありますので,それを参考にして下さい。
Q. SGMLを始めるにあたり,最初に何から始めたらよいですか?
A. SGMLについて全く知らないのであれば,入門書を読むなり,JAGATのセミナーに参加して勉強する必要があります。
次に,実践的な勉強方法として,いろいろな文書をSGMLで表わし,SGMLパーザーで検証してみることです。
SGMLのことを少々複雑なHTMLのように捉えている方が多いようです。なるほど,HTMLでは,ブラウザーで見て,うまくいけばOKかもしれません。しかし,SGMLでは,レイアウトやスタイルといった「表示のタグ」よりも,情報検索に使う「意味のタグ」が重視されます。したがって,情報システムについての理解も必要です。
Q. SGMLの印刷業界における具体的な使用方法をできれば細かく教えて下さい。
A. 「印刷」における使用には様々なケースがありますので,簡単にお答えできません。このケーススタディには,The SGML Pageの「参考論文」のT&G研究会会報が参考になるでしょう。
一般に,SGML文書はクライアントから提供されるもので,印刷会社でその形式(文書型)を決められるものではありません。つまり,印刷会社は,SGML文書を「紙」や「ネット」へ「変換」する仕事を請け負う形が多いようです。そこで,重要になることが,その「変換のワークフロー」です。
多くの印刷関係者は,「SGMLの導入」を「DTPの導入」と同じように思っているようです。確かに,SGMLはデジタル化の一つですが,DTPとは大きな違いがあります。SGMLは「設備」ではありません。
メーカーがいろいろなSGMLツールを発表していますが,それを導入するだけではSGMLを仕事にすることはできません。
SGMLの導入は,文書処理の「しくみ」の導入であり,システムエンジニアリング的発想が必要です。つまり,データベースの要件分析,DTDの設計,ワークフローの設計などができる能力です。SGMLの導入に当っては,ともかく実験して,おおよその枠組みを決めることが肝心です。The SGML Pageには,各種のフリーウェアが揃っています。御社に合ったワークフローを研究してみて下さい。
Q. SAE J2008 DTDの解説書(日本語)というものはあるのでしょうか?
その他に資料となるような文献がありましたらお教えて下さい。
A. 1997年に発行された「ソフトウェアCALSに関する調査研究報告書」をざっと見た程度ですが,J2008は直接扱っていないようなので,たぶんないと思います。また,今年度のSCALS活動で扱うかどうかは知りません。
次のサイトから得られる情報程度しか知りません。
INSTAC SCALSホームページ
SAE J2008についての最新情報
Q. 厚生省の指示による「薬品などに添付される添付文書のSGML化」について教えて下さい。
A. 日本印刷技術協会のT&G研究会会報のVol.3 No.22(1997年7月)に「医薬品添付文書の自動組版」が掲載されています。その内容はインタージョン株式会社が実験した結果です。
なお,同社から医薬品情報提供システムのホームページ(医薬品副作用被害救済・研究振興調査機構が運用)に最近の動向についての情報があることを知らせていただきました。こちらも参考にしてください。
Q. SGML宣言にあるSYNTAX SHUNCHAR CONTROLSに記述されているコード番号(0〜30,127)に値する文字は一体どういった文字なのでしょうか。
参考書等に書かれているISO 646 IRVコードを見ても30番〜126番までとか,インターネット上でISO 646等で検索してもはっきりしません。標準ではないSGML宣言文を見ると255番など使っている物もあります。
また,コード表がはっきり記述されたサイト等があれば教えていただきたい。
A. SYNTAX SHUNCHAR CONTROLSは,回避文字番号を意味し,符号系の制御文字の文字番号を示しています。ですから,規格参照具象構文におけるIRV(ISO 646,JIS X 0201)では,
0:NULL
1:SOH
2:ETX
(略)
14:SO
15:SI
(略)
30:RS
31:US
127:DEL
255:DEL(JIS X 0201)
という風になります。 詳しくは,SGML(JIS X 4151)を参照して下さい。
符号系についてのサイトは,「日本語情報処理,Ken Lunde著・春遍雀来他訳,ソフトバンク,1995」の付録をお調べ下さい。
Q. NSGMLSをWinNT上で動かしていますが,JIS X 0208が“is unknown”になり,日本語表示されません。解決策を教えて下さい。
なお,.DCLファイルでは,BASESETをJIS X 0208にセットし,SPの環境変数SP_SYSTEM_CHARSETをJISにセットしています。
A. 私はWindowsNTを持っていないので,Windows95上でのNSGMLSの話となります。NSGMLSはWin32ですから,たぶん違いはないと思います。
先ず,使用しているNSGMLSのバージョンはいくつでしょうか? 現在の1.3では,BASESETでのJIS X 0208の呼び出しシーケンスは以前と変わり,“ESC 2/4 4/2”,または“ESC 2/6 4/0 ESC 2/4 4/2”になりました。
NSGMLSはSGML宣言の呼び出しシーケンスを確認しており,エラーになるのは,それが一致していないせいです。最初に,これを確認して下さい。
それから「日本語表示されない」という意味が分かりません。ユニコードがらみですと,まだ何も研究しておりませんので,答えられません。
Q. SGML文書をWord文書に変換させたいのですが,何か良いツール,もしくは方法,なければ何かヒントになるようなアドバイスをお願いします。
A. 現在,フリーウェアのJADEでRTF出力でき,それをWORDに入力できます。
詳しくは,「JADEテストパッケージ」をご覧下さい。
残念ながら,商用製品については知りません。
Q. 大学の仕事で,160人分の教授の氏名や論文内容をCD-ROMに焼き付け,その内容を項目別検索(SGMLでいうところの,タグ付き検索)したいと依頼されました。
Panorama PROでは,検索時に
山田太郎 in <name>
というように記述しなければならず,使用に適さないということになりました。できれば,ウェブのサーチエンジンのような検索ができればと考えております。このような検索が可能なSGMLのビューアーをご存知ないでしょうか?
A. 揚げ足を取るようで恐縮ですが,「タグ付き検索」というのは,本来そういうことではないでしょうか? SQLベースの検索でもそうなります。
逆に,クライアントのニーズが「項目別検索」であってタグを意識させず使いたいというのであれば,Panorama PROの「ナビゲータ」機能を使ったらどうでしょうか。つまり,画面の左側に「索引」を表示させ選択できるようにする方法です。それが冗長であれば,別に「索引」だけのコンテンツを作ってリンクすればいいでしょう。
残念ながら,ウェブのサーチエンジンのような検索ができるビューアーは知りません。
ともかく,「項目別検索」を行なうための文書型を検討してみて下さい。また,どのような「項目別検索」の方法が望まれているかを調べてみて下さい。そうした前提が定まってから,ツールの選択または開発になると思います。
Q. NSGMLSの出力したESISデータに円印(\)が混じるのですが,これはバグですか?
A. この問題はシフトJISで表わした文書インスタンスを処理する際に生じることがあります。
これはバグではなく,NSGMLS ver.1.3.3では環境変数を次のように与えれば生じなくなります。
SP_CHARSET_FIXED=YES
SP_ENCODING=sjis
AUTOEXEC.BATにSETコマンドを置いて設定するよりも,次のようなバッチファイルを用いたほうがいいでしょう。
SET SP_CHARSET_FIXED=YES
SET SP_ENCODING=sjis
NSGMLS -fERROR.TXT 文書型定義 %1 > RESULT.ESI
Q. 具体的に,SGML→HTMLとDTPは可能ですか? どんなソフトが必要になりますか?
A. SGML→HTMLは文書型変換になります。したがって,SGMLとしての文書型がHTMLを論理的に含むように設計されていなければなりません。また,DTPでのレイアウトに十分対応するように,タグを決めておく必要があります。HTML3.2以上を考えて下さい。
HTML→DTPはフォーマット変換になります。HTMLを解析してタグ付きテキスト(例えば,QuarkXpress)へ変換します。PageMakerでの経験から,タグ付きテキストの自動流し込みだけで仕上げることは難しいと思います。必ず人手で整形することが生じます。
以上の二つの変換に使えるツールとしては,次のものがあります。
Jade
DSSSLで指定します。
DSSSLの習得はかなり困難です。
SGMLからHTMLへの文書型変換が可能です。
フォーマット変換としては,TeX,RTF,MIFへの変換が可能です。なお,MIFはFrameMaker+SGMLのファイルですが,日本語対応可能かどうかは分かりません。
Perl
Perlでプログラミングします。
Perlの習得はやや困難です。
JAGATでPerl講習会が開かれています。
Perlはプリプレス全般で重要なツールです。
SGMLパーザーとの組合せで使います。
SGMLフォーマッターのSGMLFormはPerlで組まれています。
Internet Explorer 5.0
XML/XSLで指定します。
XML/XSLの習得はやや困難です。
XMLとして扱いますが,とくに問題はないでしょう。
Q. 基本データをSGMLにすることでコストは低減できますか?
A. コストを低減できるかどうかは,システム全体の問題であり,一概に,何とも言えません。下手をすると,手間ばかりかかってしまいます。
具体的には,どの工程を自動化できるかでしょう。ともかく実験して,おおよその枠組みを決めることが肝心です。The SGML Pageには,各種のフリーウェアが揃っています。御社に合ったワークフローを研究して下さい。
Q. SGMLワークフローの図では,NSGMLSとSGMLFormというツールを使うようですが,それらのほうがJADEより便利なのでしょうか?
A. どっちが便利かというよりも,私のSGMLワークフローは,大きく二つの流れを意味しています。(なお,そのワークフローは最終出力のツールは商用製品になる場合もありますが,途中はすべてフリーウェアで処理できるように考えています。)
ESISフレームワーク
ESISフレームワークは,DSSSLができるまでの10年来のワークフローです。NSGMLSパーザーからESISデータを得て,Perlなどで後処理(フォーマッティング)する流れです。
SGMLFormはその一つに過ぎません。
このフレームワークは,柔軟性に富んでおり,実用的です。
もっとも,いかに実用化するかは,後処理のプログラムにかかっています。
DSSSLフレームワーク
DSSSLフレームワークは,JADEなどを使って直接フォーマッティングする流れです。
残念ながら,JADEのバックエンドは実用にはまだ不十分です。しかし,工夫次第で十分なツールになるでしょう。
今後,これに次の二つのワークフローが加わるでしょう。
Internet Explorer5.0(IE5)によるXML/XSL処理
IE5はオブジェクト文書モデル(DOM)をスクリプトでアクセスできます。
XMLのフォーマッティングにはこちらの方がいいかもしれません。
DOMについては,現在,研究中です。近いうちにまとめて発表します。
EmacsによるSGML/DSSSL処理
この内容については,現在,研究中です。
Q. 同じタグ名で複数のデータを出力したい場合のDTDはどのように表現するのですか?
A. 質問の意図がよく分かりませんが,例えば,次のような名簿データを考えてみましょう。
氏名 郵便番号 住所 電話番号 オザワ …… 123 東京都…… 3456-…… ミヤザワ …… 456 大阪市…… 789-…… ムラヤマ …… 789 名古屋市…… 123-…… : : : : : : : : 先ず,文書インスタンスは次のようになるでしょう。これはExcelのようなスプレッドシート(作表)の出力に似ています。なお,タグ名は分かりやすいように漢字にしましたが,実際はローマ字の方がいいでしょう。
<名簿> <登録者><氏名>オザワ ……<郵便番号>123<住所>東京都……<電話番号>3456-……</登録者> <登録者><氏名>ミヤザワ ……<郵便番号>456<住所>大阪市……<電話番号>789-……</登録者> <登録者><氏名>ムラヤマ ……<郵便番号>789<住所>名古屋市……<電話番号>123-……</登録者> : : </名簿>従って,この文書型は次のようになるでしょう。ポイントは,(登録者+)という表現です。但し,タグ最小化については説明のために適当に設定しました。
<!ELEMENT 名簿 - - (登録者+)> <!ELEMENT 登録者 - - (氏名,郵便番号,住所,電話番号)> <!ELEMENT 氏名 - O (#PCDATA)> <!ELEMENT 郵便番号 - O (#PCDATA)> <!ELEMENT 住所 - O (#PCDATA)> <!ELEMENT 電話番号 - O (#PCDATA)>
Q. SgmlFormがうまく動きません。
A. SgmlFormは,MacJPerl,JPerl共にバージョン4でのみ動作確認をしておりますが,バージョン5ではいろいろ問題があるようです。残念ながら,現在,SgmlFormのバージョンアップは考えておりません。
代わりの「フォーマッター」としてMacXTをご利用ください。
Q. XMLに取り組むことができるか検討していますが,準備すれば実際に活用できるかも判断できません。どうしたらいいでしょうか?
A. XMLについてもう少し勉強する必要があるでしょう。
The SGML Pageの「XML入門」を読むか,または「参考図書」に入門書をいろいろ紹介してありますので,それを参考にして下さい。
Q. SGML文書でExcelのデータを表示したいのですが,記法宣言を記述してもうまくいきません。他に記述しなければならない部分があるのでしょうか?
A. 「うまくいかない」という内容が分かりませんので,何とも答えようがない質問です。どのようなツールをお使いなのか,どのようなエラーメッセージが出たのか,お知らせください。こうした質問では,重要なことです。
一般に,SGMLパーザーではExcelデータは直接扱いません。Excelデータを扱うのはパーザーの後処理を受け持つ別のツールです。パーザーは記法宣言とその実体の関係を検証して,単にESISデータでコマンド形式で出力するだけです。
次に記法宣言とその実体の関係を示します。先ず,文書型宣言においてNOTATION宣言でTIFF形式であることを,その実体が“GRAPH1.TIF”と“GRAPH2.TIF”であることを示します。次に,文書インスタンスにおいてその実体を“&graph1;”と“&graph2;”で参照します。
<!DOCTYPE DOC [ : <!NOTATION TIFF PUBLIC "+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Aldus/Microsoft Tagged Interchange File Format//EN"> : <!ENTITY graph1 SYSTEM "C:\DATA\GRAPH1.TIF" NDATA TIFF> <!ENTITY graph2 SYSTEM "C:\DATA\GRAPH2.TIF" NDATA TIFF> : ]> <DOC> : &graph1; : &graph2; : </DOC>
Q. 紙の文書をOCRソフトでテキストデータへ変換してからSGMLに簡単に変換するソフトはあるか?
A. そうしたことを全般的に簡単に行うソフト一式は,たぶんないと思います。
紙の文書をOCRで読む処理はOCRソフトの問題ですので,ここでは論じません。
OCRの読み取ったテキストデータには,たぶん多くの誤り(外字,半角かな文字など)が含まれているでしょう。これはワープロ文書から取り出したテキストデータでも同じことです。先ず,それらの誤りを検出して除く必要があります。それを行う「汎用のツール」はありません。実験的なツールのTextParkを使うか,自ら開発することになるでしょう。
次に,誤りが除かれたテキストデータをSGMLへ変換することになりますが,これもまた,それを行う「汎用のツール」はありません。自分で開発することになるでしょう。一例として,プレーンテキストからHTMLへ変換するPerl入門のスクリプトを参照してください。
実験的なツールを使いこなすにしても,自分でツールを開発できる力を持っていることがSGML分野の仕事へ取りかかれる条件になります。Perl,Tcl,Python,Cなどのプログラミングを習得することをお勧めします。
Q. SGMLタグを入れ子にすることは可能ですか?
A. SGMLタグは入れ子にできます。それを許す文書型定義の例は,次のようになります。
<!DOCTYPE DOC [ <!ELEMENT DOC - - (S+)> <!ELEMENT S - - (P)+> <!ELEMENT P - - (#PCDATA|P)+> ]>従って,その文書インスタンスは次のように表現できます。
<DOC> <S><P>xxxx</P><P>yyy</P></S> <S><P>aaaa<P>bbb</P>cc<P>ddd</P>eeee</P></S> </DOC>一見すると入れ子のようですが,次のような重複したタグを扱うことはできません。
<P>aaaa<W>bbb</P>cc</W>
Q. DTDにおいて次のようなENTITY宣言がエラーになるが,下線を含んだ名前は許されないのか?
<!ENTITY AA_BBB SYSTEM "AA_BBB.CGM" NDATA cgm>
A. これはSGMLの仕様です。SGMLでは,共通識別子の名前は,省略時において,英大文字,英小文字,数字,ピリオド,マイナスで構成します。XMLでは,さらに下線とコロンを含むことができます。従って,SGML宣言において次のように下線を名前文字に加える必要があります。
SYNTAX NAMING LCNMCHAR "-._" UCNMCHAR "-._"
Q. SGMLの文章をJavaで読込むことは可能ですか?
A. Javaで書かれたSGMLパーザーがあれば,SGML文書を読むことができますが,あいにく私はそうしたパーザーがあるかどうかは知りません。
現在,最も優れたSGMLパーザーであるNSGMLSの作者がそれをJavaで書き換えていないことを考えると,たぶん存在しないように思われます。
SGML文書を直にJavaで処理することは極めて困難ですから,SGML文書をXML文書へ変換して処理したらいいでしょう。その変換はSXというプログラムで簡単にできます。
Q. SGML文書のリンクにURLを記述しても表示されないのか?
A. SGMLのリンクの概念にはURLはありません(それはXMLで導入されています)。
したがって「URLを記述しても表示されない」というのは,質問の意味がよく分かりませんが,現実にそうだとしてもSGMLブラウザーとしては別に問題ではありません。
URLへリンクする方法は,その機能を持つSGMLブラウザーを使うか,SGMLから(XML経由で)HTMLへ変換して通常のウェブブラウザーで行うことになるでしょう。
Q. なぜXMLが必要なのか?
「なぜXMLが必要なのか?」という漠然としたところが理解できておりません。XMLに関するホームページや本をいくつか見ましたが,どの文書も「タグ付けされたデータで,ホームページや印刷の再利用に便利」…という紹介しかされておらず,その後は具体的な作成方法の話に…といった展開の紹介書籍ばかりで,肝心な「通常のデータベースとは違った利点」「XMLだからこそのメリット」などが見えてこないものばかりです。入門書はどれも「XMLはSGMLのサブセット…」等の技術レベルとしての解説ばかりで,実際の導入における利点や活用法がわかりやすく解説されていません。
例えば,SQLやアクセスやオラクル等のデータベースソフトを用い,書物のデータを,タイトル,見出し,本文等を別項目とし,データベースを組んだとします。それをサーバーに置き,ASPのスクリプトでHTMLタグを付加すればホームページ上での検索や抽出が行えます。また,そのデータベースを元に必要な部分を抽出し,テキスト吐き出ししたものを自動組版(あるいはWAVEのような連動組版)をすれば,印刷用データとしても活用できます。どちらに活用するにしてもASPや自動組版の準備が必要なのは手間と考えるにしても,それはXMLにしてもDTDの定義等が必要なのであくまでも「データ活用」という意味では同じ土俵と考えます。
XMLはこれらのデータベースソフトを用いたデータとは,どう異なるのでしょうか?また,上記のような利点は製作をする会社にとってのメリットではありますが,顧客に対してのメリットはなにかあるのでしょうか?
ワンソースマルチユースという考え方としてコストや納期短縮のメリットはわかりますが,それはデータベースソフトを用いた場合も同様ですので「XMLだからこそ,ここがメリット」「XMLでなければこういうことができない」という部分を知りたいのです。
A. DBを中心にしての応用を見る限りは,そう違いはないでしょう。これを「天動説」とすれば,XMLは「地動説」です。つまり,「天動説」にこだわっていると「地動説」は理解できません。
もし,あるDBがその1社内の利用だけでなく,いくつもの会社と連携するような場合は,多くのプログラムを個々で開発しなければなりません。同じ企業内でも部門間で連携する場合,同じことが言えます。とりわけ大企業では部門ごとに情報システムが別々の言語で,しかも別々のデータ形式で扱われています。
つまり,現在のように,情報化が一層緊密になっていく状況下では,個別の開発は決して生産性・保守性がいいとは言えないのです。
そこで標準の情報コンテナーとしてXMLが注目されています。XMLをインタフェースとすることで,個別の開発は「データ指向型」と呼ばれる手法を採用できます。
例えば,あるXML文書をいくつかの表示様式の違うHTML文書へ変換することを想定してみてください。その種類数だけ何らかのプログラムを書くべきか,それともその種類数だけXSL変換のスタイルシートを書くか,の選択があるでしょう。もちろん後者の方が生産性・保守性が高いはずです。
例えば,A社がB社へ部品を発注をしたことを想定してみてください。A社は発注伝票を発行し,B社はそれを受注伝票として扱います。これを別々のデータ形式として何らかのプログラムを書くべきか,それともコンテナー内のタグの解釈の違いとしてXSL変換のスタイルシートを書くか,の選択があるでしょう。これも,もちろん後者の方が生産性・保守性が高いはずです。
これからのDBはネットによる企業連携まで視野に入れて設計しないと,激変する世の中の動きに対応できません。
これらの例はXSLだけですが,一般に「データ指向型」とは,データごとにそれ用のプログラムで対応するのではなく,データによってプログラム(の機能)が呼び出されるようにする仕組みのことです。「先ずデータありき」です。プログラムはそれに付属するという考え方です。
これは「オブジェクト指向」と同じ考え方でもあります。オブジェクト(=データ)がメソッド(=プログラム)を持つと考えるのは,扱うべきオブジェクトが変更(増えたり,減ったり)しても,それに付随するメソッドだけを変更することで,システム全体に影響を与えないようにするためです。
何が何でも,XMLでなければならないというわけではありません。しかし,SGML以上の合理的な表記方法はたぶんないでしょう。それをネット応用できるようにしたものがXMLです。XML関連ツールも充実してきました。
実際,XMLには多くの選択肢があります。個々の応用で最適な図式を描くことが肝心です。場合によっては,従来の手法でも十分かもしれません。「印刷」という分野においては,まだまだ「天動説」が支配的です。それは受注型サービス産業の宿命かもしれません。今,「情報処理サービス業」的展開を図っている印刷会社が増えてきました。顧客の情報システムのどこを担当するかが課題と言えます。
(2000年2月記,6月追補訂正,2001年8月追補)