(57)【要約】【課題】  コマンドライン指向の動作環境におけるコマンドコードのサポート文書を生成する方法を提供する。【解決手段】  本方法は、パーサコードを生成するのに必要な情報を含むＸＭＬソースファイルを作成することを含む。パーサコードは、コマンドコードのコンパイルを容易にする。本方法はさらに、マンページファイル、使用法メッセージファイル、およびパーサコードのうちの少なくとも２つをＸＭＬソースファイルから生成することを含む。【選択図】  図７Ａ
2004348737.tif 000002
【特許請求の範囲】
【請求項１】
コマンドライン指向の動作環境におけるコマンドコードのサポート文書を生成する方法であって、
前記コマンドコードのコンパイルを容易にするパーサコード（４１８）を生成するために必要な情報を含むＸＭＬソースファイル（４０６）を作成することと、
マンページファイル（４１０）、使用法メッセージ（４２２）、および前記パーサコード（４１８）のうちの少なくとも２つを前記ＸＭＬソースファイル（４０６）から生成することと
を含むコマンドコードのサポート文書を生成する方法。
【請求項２】
前記ＸＭＬソースファイル（４０６）を作成することは、
シンタックス指示エディタ（４０４）を使用すること
を含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項３】
前記ＸＭＬソースファイル（４０６）を作成することは、
検証用の文書型定義（４０２）を使用すること
を含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項４】
前記ＸＭＬソースファイル（４０６）を作成することは、
検証用のＸＭＬスキーマ（４０２）を使用すること
を含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項５】
前記ＸＭＬソースファイル（４０６）は、
前記マンページファイル（４１０）を生成するために使用され、該マンページファイル（４１０）を生成することは、前記ＸＭＬソースファイル（４０６）に設けられる情報の順序を並べ替えること
を含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項６】
前記マンページファイル（４１０）を生成することは、
ＸＳＬＴ（拡張可能スタイルシート言語変換）変換（５０４）を前記ＸＭＬソースファイル（４０６）に対して実行すること
を含む
請求項５に記載のコマンドコードのサポート文書を生成する方法。
【請求項７】
前記マンページファイル（４１０）を生成することは、
ＮＲＯＦＦ変換（４０８）を前記ＸＭＬソースファイル（４０６）に対して実行すること
を含む
請求項５に記載のコマンドコードのサポート文書を生成する方法。
【請求項８】
前記ＸＭＬソースファイル（４０６）は、前記パーサコード（４１８）を生成するために使用され、
該パーサコード（４１８）を生成することは、
前記ＸＭＬソースファイル（４０６）に対してパーサ変換（４１２）を実行して、パーサソース（４１４）を生成すること
を含み、
該パーサコード（４１８）を生成することは、
パーサジェネレータ（４１６）を使用して、前記パーサソース（４１４）から前記パーサコード（４１８）を生成すること
をさらに含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項９】
前記ＸＭＬソースファイル（４０６）は、前記使用法メッセージファイル（４２２）を生成するために使用され、
該使用法メッセージファイル（４２２）を生成することは、
前記ＸＭＬソースファイル（４０６）に対してＡＳＣＩＩ変換（４２０）を実行すること
を含む
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【請求項１０】
前記ＸＭＬソースファイル（４０６）は、前記マンページファイル（４１０）、前記使用法メッセージ（４２２）、および前記パーサコード（４１８）を前記ＸＭＬソースファイル（４０６）から生成するために使用される
請求項１に記載のコマンドコードのサポート文書を生成する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンドライン指向の動作環境におけるコマンドコードのサポート文書を生成するためコマンド用サポートファイルの生成方法および生成システムに関する。
【背景技術】
【０００２】
コンピュータおよび関連技術が広く使用されるに伴って、さまざまなコンピュータシステム上で実行されるプログラムを頻繁に更新することが必要となっている。
例えば、互換性、追加機能、および／またはバグフィックスを提供するには、更新を頻繁に行うことが必要とされる。
それぞれの更新により、通常、更新されたプログラムの新しい特徴および／またはバグフィックスを反映したユーザに対する説明書が存在する。
【０００３】
コマンドライン指向の動作環境（例えば、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、およびＤＯＳ）では、例えば、ソフトウェアアップグレードが、新しいコマンドセット、既存のコマンドに対する新しいオプション、従前のコマンドの削除などを含む可能性がある。
更新されたソフトウェアをユーザが利用することを助けるために、数百ページものマニュアル（マンページ（manpage））が提供されることがある。
マンページは、例えば、コマンドの説明、そのコマンドを使用するシンタックス、およびそのコマンドに関連したさまざまなオプションを提供することがある。
したがって、特にソフトウェアのアップグレード後に、ユーザがそのコマンドセットを利用して生産性を維持できるには、マンページの正確度が非常に重要である。
【０００４】
しかしながら、これまで、マンページの作成プロセスは、かなり大きな労力を必要とし、かつ、誤りを起こりやすいものであった。
一般的に言えば、コマンドおよびマンページは、２つの別々のプロジェクトとして取り扱われてきており、多くの場合、異なるグループの人間の技術者（human engineer）が配置されていた。
調整および意思疎通に関連した問題ならびに単純な人間の解釈誤りのために、あるグループの技術者がコマンドに対して変更を行っても、マンページは、時に、マンページの更新を担当する技術者によって適切に更新されないことがある。
【０００５】
さらに、マンページを開発する通常の手法は、ＮＲＯＦＦを使用することである。
このＮＲＯＦＦは、マンページの構成要素がコード化される際にマンページがどのように見えるかを記述する言語である。
「ｍａｎ」コマンド（例えばＵＮＩＸ）によって起動されると、マンページの構成要素が処理されて、そのコマンドに対応するオンラインマニュアルページが表示される。
しかしながら、ＮＲＯＦＦは、柔軟性がなく、使用するのが難しい少なくとも２０年前の言語である。
ＮＲＯＦＦファイルの正当性を確認する唯一の方法は、ファイルを実行し、ディスプレイ上でその結果を見て、その結果が妥当であるかどうかを判断することである。
文書の検証を行う機能がないことから、マンページの作成者は、ＮＲＯＦＦファイルの時間の要するサンプルの実行、および、ＮＲＯＦＦコードにエラーがあるかどうかをその実行結果を見ることにより視覚的に判断することに頼らなければならない。
【０００６】
図１は、コマンドおよび関連したマンページを作成するプロセスを示す従来技術のフロー図を示している。
このフロー図の左半分は、開発技術者が取る例示的な動作に加えて、開発技術者が出力する作業成果物を表している。
この開発技術者は、コマンドの作成および／または変更を行う役割を有する。
フロー図の右半分は、学習製品技術者が取る例示的な行動に加えて、学習製品技術者が出力する作業成果物を表している。
学習製品技術者は、マンページが、開発技術者によって作成されたコマンドを反映していることを確実にする役割を有する。
【０００７】
このフロー図は、ブロック１０２の外部仕様書から開始する。
一般的に言えば、外部仕様書は、通常、市場の要求に応じて、製品の特徴の概要を説明した文書である。
外部仕様書は、学習製品技術者が、学習製品計画を開発することに使用される（１０４）。
その出力は、学習製品計画（１０６）であり、学習製品技術者が担当するさまざまな中間目標および提出物の概要を説明するスケジュールを含む。
【０００８】
また、外部仕様書（１０２）は、開発技術者が当該外部仕様書を実施するコード（１０８）を開発することにも使用される。
ブロック１１０では、開発技術者が、コード化されるコマンドに関連したマンページを草稿する。
このコード化されるコマンドは、外部仕様書に従って作成されたものである。
開発技術者は、作成されるコマンドの詳細な知識を有するので、したがって、マンページの草稿は、少なくとも最初のうちは、通常、開発技術者によって作成される。
この段階の予備的なマンページの作成は、開発技術者だけで行われてもよいし、学習製品技術者の助けを借りて行われてもよい。
【０００９】
予備的なマンページ文書は、このようにして作成される（１１２）。
ブロック１１４では、学習製品技術者が、例えば、適正な文法および英語について、予備的なマンページ文書を見直し、場合によっては、そのマンページをＮＲＯＦＦでコード化する。
開発技術者が提供したこの文書は、通常、ワープロのファイルフォーマット（例えば、ワシントン州レドモンドのMicrosoft CorporationによるＷｏｒｄ）、ＡＳＣＩＩ、または人間が読むことができる別のフォーマットであるので、学習製品技術者は、提供された情報を解釈して、開発技術者が意図しているものを反映するマンページをＮＲＯＦＦで作成することを試みる必要がある。
人々のグループ間で人間の解釈および人間の意思疎通が必要とされる場合に通常起こるように、多くの場合、エラーが不注意で入り込み、それによって、コマンドとその結果生成されるマンページとの間に論理的な乖離が生じ得る。
その上、時に、あるファイルフォーマット（例えば、上述したＷｏｒｄのワープロアプリケーション）で利用可能なフォーマット化が、ＮＲＯＦＦで利用可能でない場合もある。
【００１０】
学習製品技術者が、開発技術者の意図を１００％の正確度で何とか解釈できた場合であっても、その結果作成されるマンページは、依然として、スタイル、フォーマット、および順序においてかなりまちまちである場合がある。
これは、異なる学習製品技術者が、個々の主観的なＮＲＯＦＦのコード化の実行および好みに基づいて、マンページを異なってコード化できるからである。
したがって、同じ製品の異なるマンページは、異なって見えることがあり、かつ／または、異なって編成されることがあり、ユーザがマンページを読んで理解することを必要以上に難しくしている。
【００１１】
ブロック１１６では、開発技術者が、コードの開発を続けて、コマンドを微調整し、バグをフィックスし、時に、新しい機能を追加する。
コマンドに対して変更が行われるごとに、学習製品開発者が、その変更を適切なマンページ（１つまたは複数）に反映できるように、開発技術者は、学習製品技術者にその変更を通知するというオプションを有する。
開発技術者の中には、学習製品技術者にすべての変更を通知する熱心な者もいる。
それ以外の開発技術者は、コマンドの変更を学習製品技術者に知らせることを単に忘れるか、あるいは、わざわざ知らせるようなことはしない。
それによって、マンページが、変更されたコマンドと一致しないことになる。
他の製品技術者は、ブロック１１８で自身の自由裁量を行使することにより、いくつかの変更が、マンページに反映するのに値しないと決定することがある。
必然的に、これらの主観的決定のいくつかは間違っており、その結果、マンページの中には、変更されたコマンドと一致しなくなるものもある。
【００１２】
ブロック１１４では、マンページの見直し／編集サイクルが行われる。
ある時点で、発行（１２２）に移行する必要があり、この発行が、最終的なマンページの作業成果物（１２４）となる。
場合によっては、発行プロセス（１２２）がすでに開始されたために、開発サイクルの末期に生じたコマンドに対する変更が、マンページの更新にならないことがある。
したがって、これらのコマンドについては、マンページの次のリリースまで、マンページは、一致しないままとなる。
【００１３】
このマンページの生成に必要な手動による時間の要するプロセスは、場合により、マンページとリリースされたコードとの不一致を引き起こすことがある。
図２は、リリースされたコードとマンページとの間の不整合がどのようにして製品に発生し得るかの従来技術の例を示している。
最初に、製品は、バージョン１．０のコード２０２およびバージョン１．０のマンページ２０４によりリリースされる。
後に、バージョン２．０のコード２０６およびバージョン２．０のマンページ２０８がリリースされる。
今までのところ、各コードのリリースには、マンページのリリースが対応している。
しかしながら、バージョン３．０のコード２１０がリリースされる時、マンページを改訂するのに十分な資源、例えば時間または技術的資源がなかった可能性があることから、コードの変更を反映した対応する３．０のマンページのリリースは存在しない。
その代わり、バージョン２．０のマンページ２０８が、コードバージョン３．０  ２１０と共にリリースされる。
その結果、バージョン３．０で作成および／または変更が行われた新しいコマンドは、ユーザに知られないことがあり、かつ／または、バージョン３．０ではもはやサポートされていない古いコマンドが、マンページでまだ解説されていることがあり、これは、ユーザのフラストレーションにつながる。
別の起こり得る問題は、オプションがコマンドに追加されるか、もしくは、コマンドから除去されて、それらのオプションが文書化されないか、または、オプションの変更を使用するための値が提供されないことである。
【００１４】
マンページに加えて、パーサコードおよび使用法テキストも、コマンドコード用に作成する必要がある。
パーサコードとは、本明細書で使用されるように、コマンドを解釈して、プログラムがそのコマンドを適切に実行することを可能にする１つのコードを表す。
このコマンドの解釈には、そのコマンドのオプションの解釈も含まれる。
使用法テキストは、人間が読むことができるテキストであり、コマンドをどのように使用できるか、例えば、コマンドに関連したオプションおよびパラメータが何であるかを説明するコマンドによって提供されるテキストである。
【００１５】
マンページの場合と同様に、パーサコードおよび使用法テキストの作成ならびに更新の従来技術のプロセスも、手動で、かつ、エラーを起こしやすいものとなる傾向がある。
図３は、コマンドコードから得られるパーサコード、使用法テキスト、およびマンページの作成および更新の従来技術のプロセスを示す従来技術のフロー図である。
このフロー図は、開発技術者３００がコマンドコードを作成（３０２）し、パーサコードを作成（３０４）し、そして、使用法テキスト３０６を作成することから開始する。
コマンドコードが作成（３０２）された後、フロー図は、矢印３０８に従って学習製品技術者（３１０）に続く。
この学習製品技術者は、上述した方法でマンページ（３１２）を作成／編集する。
【００１６】
通常通り、性能および正確度を保証するために、コマンドコードに対してテストを行う必要がある。
したがって、ブロック３１６で、開発技術者３００は、コマンドコードをテストする。
コマンドコードに本質的にエラーがなく、性能が許容できるものである場合、テストは、判断ブロック３１８により完了し、そのコマンドコードおよびマンページは、ブロック３１４で出荷される。
【００１７】
ブロック３１６のテストが、コマンドコードが不十分であることを示している場合、開発技術者３００は、ブロック３１８でコマンドコードを変更する。
コマンドコードが変更されると、パーサも、ブロック３２０で変更されることがある。
開発技術者３００は、ブロック３２２で、コマンドコードおよび／またはパーサコードに対する変更により、文書に対する変更が必要となるかどうかを、多くの場合、主観的に判断する。
開発技術者が、文章に対する変更が必要であると判断すると、使用法テキストが、ブロック３２６で変更される。
他方、開発技術者の評価が、誤っており、変更が、使用法テキストに反映されない場合、その結果として、使用法テキストは、変更されたコマンドコードと一致しないことになる。
【００１８】
使用法テキストが、変更された場合であっても（ブロック３２２で判断されて、ブロック３２６で実行されるように）、その変更を学習製品技術者に連絡して、その変更をマンページに反映させる必要があるかどうかをブロック３２４で判断する自由裁量は、開発技術者にある。
この場合も、この自由裁量は、主観的であることが多い。
開発技術者の評価が誤っているか、または、開発技術者が学習製品技術者に変更を連絡し忘れた場合、マンページは、更新されたコマンドコードと一致しないことになる。
【００１９】
図３から分かるように、パーサコードおよび使用法テキストは、手動で構築され、個別に保持される。
したがって、図３から分かるように、使用法テキストおよび／またはマンページを変更しなくても、パーサコードに変更を行うことが可能である。
さらに、パーサコードおよび／またはマンページを変更しなくても、使用法テキストに変更を行うことも可能である。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上記に鑑み、マンページならびに／または使用法テキストおよび／もしくはパーサコードの作成および更新を行う新しい技法が望まれている。
【課題を解決するための手段】
【００２１】
本発明は、一実施の形態において、コマンドライン指向の動作環境におけるコマンドコードのサポート文書を生成する方法に関する。
本方法は、パーサコードを生成するのに必要な情報を含むＸＭＬソースファイルを作成することを含む。
パーサコードは、コマンドコードのコンパイルを容易にする。
本方法はさらに、マンページファイル、使用法メッセージファイル、およびパーサコードのうちの少なくとも２つをＸＭＬソースファイルから生成することを含む。
【００２２】
別の実施の形態では、本発明は、コンピュータ可読コードが具現化されたプログラム記憶媒体を含む製品に関する。
このコンピュータ可読コードは、コマンドライン指向の動作環境でコマンドコード用のサポート文書を生成するように構成される。
ＸＭＬソースファイルにアクセスするためのコンピュータ可読コードが含まれる。
このＸＭＬソースファイルは、パーサコードを生成するのに必要な情報を含む。
このパーサコードは、コマンドコードのコンパイルを容易にする。
マンページファイル、使用法メッセージファイル、およびパーサコードのうちの少なくとも２つをＸＭＬソースファイルから生成するためのコンピュータ可読コードがさらに含まれる。
【００２３】
さらに別の実施の形態では、本発明は、コマンドライン指向の動作環境でコマンドコード用のサポート文書を生成するコンピュータ実施される方法に関する。
この方法は、ＸＭＬソースファイルにアクセスすることを含む。
このＸＭＬソースファイルは、パーサコードを生成するのに必要な情報を含む。
このパーサコードは、コマンドコードのコンパイルを容易にする。
この方法は、マンページファイルを生成することをさらに含み、この生成は、ＸＭＬソースファイルに設けられる情報の順序を並べ替えること、ＸＭＬソースファイルに対するＸＳＬＴ（拡張可能スタイルシート言語変換（eXtensible Stylesheet Language Transformation））変換およびＸＭＬソースファイルに対するＮＲＯＦＦ変換の一方を実行することとを含む。
【００２４】
以下の本発明の詳細な説明では、添付図面と共に、本発明のこれらの特徴および他の特徴をさらに詳細に説明することにする。
【００２５】
添付図面の図に本発明を図示するが、これは、例としてであって、限定するものではない。
添付図面において、同じ参照符号は、同様の要素を参照する。
【発明を実施するための最良の形態】
【００２６】
次に、添付図面に図示するような本発明のいくつかの好ましい実施の形態を参照して、本発明を詳細に参照する。
以下の説明では、本発明の十分な理解を提供するために、多数の具体的な詳細を述べる。
しかしながら、これらの具体的な詳細の一部またはすべてがなくても本発明を実践できることは、当業者に明らかである。
それ以外の場合には、本発明を不必要に分かりにくくしないように、既知のプロセスステップおよび／または構造を詳細には説明していない。
【００２７】
一実施の形態では、本発明は、単一のＸＭＬソースファイルを使用し、この単一のＸＭＬソースファイルから、マンページ、使用法データファイル、パーサコードファイルなどのサポートファイルが、自動的に生成される。
必要とされるサポートファイル（例えば、マンページ、使用法データファイル、およびパーサコードファイル）が、単一のソースから自動的に生成されるので、サポートファイルの作成および更新における人間の判断および自由裁量に起因する不整合は、大幅に低減される。
さらに、サポートファイルが、単一のソースファイルから自動的に生成されるので、個々のサポートファイルは、単一のＸＭＬソースファイルと自動的に一致し、個々のサポートファイルが互いに一致しない可能性が本質的に排除される。
その上、すべてのサポートファイルが、単一のＸＭＬソースファイルから自身の情報を引き出すので、サポートファイルを更新するタスクを、単一のＸＭＬソースファイルを更新すること、および、サポートファイルの新しい組を再度生成することに削減することが有利に行われる。
【００２８】
一実施の形態では、ＸＭＬソースファイルは、コマンド、使用法データ、およびマンページに標準的に含まれることになる他のあらゆる情報のシンタックスを記述する。
さらに、ＸＭＬソースファイルは、パーサコードを生成するのに必要な情報を含むので、コマンドコード（すなわちマンページが記述するコード）が、コンパイルされる前であっても、ＸＭＬソースファイルが作成される。
したがって、この条件により、ＸＭＬソースファイルの情報が、コマンドコードと常に一致することが確実になる。
【００２９】
また、ＸＭＬを使用することにより、他の利点も提供される。
例えば、ＸＭＬを使用することにより、技術者は、サポートファイルを（ＸＭＬソースファイルを介して）作成するタスクをより効率的かつ正確なものとするために、文書型定義（ＤＴＤ（document type definition））および／またはＸＭＬスキーマのような現代の文書検証技術を使用して、シンタックス指示エディタ（syntax directed editor）を駆動することができる。
例えば、マンページを例に取る。
習得するのが難しいＮＲＯＦＦ言語を使用してマンページを作成しなければならない従来技術の手法とは異なり、本発明では、マンページをＸＭＬソースファイルから自動的に生成することが可能である。
ＸＭＬは取り扱いが容易であるだけでなく、ＸＭＬを使用することにより、データ入力段階の期間中にローバストな編集およびエラーチェックを行うことも可能である。
例えば、ＸＭＬを取り扱うシンタックス指示エディタは、入力用の要素を自動的に一覧にすることができるので、マンページ作成者は、それらの要素を覚えておく必要がない。
別の例として、ＤＴＤ技術により、マンページ作成者は、ＸＭＬソースファイルが作成されている間、エラーの除去および／または捕捉を行うことが可能である。
それとは対照的に、従来技術のＮＲＯＦＦ手法では、ＮＲＯＦＦファイルの正当性を確認するために、技術者が、ＮＲＯＦＦファイルを実行して、ディスプレイ上の結果を見る必要がある。
【００３０】
さらに、ＸＭＬ技術、および、ＸＭＬに対する適切な変換を使用することにより、マンページのプレゼンテーションとの整合性も保証される。
従来技術で行われていたように、マンページ作成者がマンページ情報を適切に順序付けることに頼るのではなく、変換エンジンが、ＸＭＬソースファイル内に設けられた情報を分析し、その情報を、ＸＭＬソースファイル内に設けられた順序に関係なく正しい順序でマンページに出力する。
【００３１】
本発明の特徴および利点は、図面および以下の解説を参照することによって、より良く理解することができる。
図４は、本発明の一実施の形態による、単一のＸＭＬマンページソースファイルを使用して、マンページ、使用法メッセージファイル、パーサコードファイルなどのサポートファイルを一致させて生成することを示すブロック図である。
先に述べたように、ＸＭＬマンページソースは、文書型定義（ＤＴＤ）またはＸＭＬスキーマのような現代の文書検証技術に準拠している。
ＤＴＤまたはＸＭＬスキーマは、ブロック４０２で提供される。
ブロック４０４は、技術者がＸＭＬマンページソースファイルを構築することに使用することができるシンタックス指示エディタを示す。
上述したように、ＸＭＬの使用により、シンタックス指示エディタ（例えば、ＥＭＡＣＳ、ＨＰ−ＵＸ（商標）およびＬＩＮＵＸ、ならびにＷｉｎｄｏｗｓ上における、ヨーロッパ／オーストリアのウィーンのRudolfsplatz 13a/9 A-1010のAltova GmbHによるＸＭＬ  Ｓｐｙ（www.altova.com）上のオープンソースエディタ、または別の適切なシンタックス指示エディタ）の使用が容易になる。
このシンタックス指示エディタにより、ＸＭＬソースファイルを作成する効率および正確度の度合いが大幅に改善される。
【００３２】
ＸＭＬマンページソースファイルは、ブロック４０６に示されている。
一般的に言えば、ＸＭＬマンページソースファイルは、コマンドコードが更新される時はいつでも更新される。
このことは、先に述べたように、ＸＭＬマンページソースファイルが、ソースコードをコンパイルするために必要とされるパーサの作成に必要な情報を含むことから保証されるものである。
この単一のＸＭＬマンページソースファイル４０６から、複数のサポートファイルを自動的に生成することができる。
【００３３】
ＸＭＬマンページソースコード４０６からマンページを作成するために、ＮＲＯＦＦ変換４０８が実行されて、ＮＲＯＦＦマンページ４１０が作成される。
現在、既存のシステムと互換性を持たせるために、ＮＲＯＦＦマンページ４１０は、マンコマンド（man command）への入力として使用される。
しかしながら、マンページは、中間的なＮＲＯＦＦ変換４０８およびＶＲＯＦＦマンページ４１０を用いることなく、ＸＭＬマンページソースファイル４０６から直接生成できることが考えられる。
ＮＲＯＦＦ変換ブロック４０８およびＮＲＯＦＦマンページブロック４１０を用いる場合であっても、マンページ作成者は、マンページを作成するために、ＮＲＯＦＦ領域で作業する必要がないことに留意されたい。
ＸＭＬマンページソースファイル４０６に対してＸＳＬＴ変換を直接実行して、マンページを得ることが可能である。
マンページ作成プロセスについては、本明細書において図５と関連してさらに解説する。
【００３４】
パーサコードを生成するために、ＸＭＬマンページソースコード４０６は、パーサ変換４１２に入力を供給する。
パーサ変換４１２は、ＸＭＬマンページソースコード４０６からパーサソース４１４を作成する。
パーサソース４１４は、パーサコード４１８を生成するパーサジェネレータ４１６に入力される。
パーサ変換のさらに詳細な内容については、本明細書において図６Ａ，図６Ｂを参照して解説する。
【００３５】
使用法メッセージを生成するために、ＸＭＬマンページソースコード４０６は、ＡＳＣＩＩ変換ブロック４２０への入力として使用される。
このＡＳＣＩＩ変換ブロック４２０は、コマンドプログラムによって起動されると、使用法メッセージ４２２を生成する。
使用法メッセージは、実行時に生成することもできるし、コンパイル時に生成することもできる。
使用法メッセージの生成のさらに詳細な内容については、図７Ａおよび図７Ｂを参照して解説する。
【００３６】
上記から分かるように、ＸＭＬマンページソースコード４０６は、異なる型の出力を生成するのに、単一のソースから動作するという利点をもたらす。
これらの異なる型の出力のいくつかは、人間が読み取ることを目的としたもの（例えば使用法メッセージ４２２）であり、また、いくつかは、マシンのみが読み取ることを目的としたもの（例えばパーサコード４１８）である。
変換プロセスを介して、サポートファイルは、この単一のソースから自動的に生成され、それによって、サポートファイルが互いに一致していないことがあるという可能性が、実質的に除去される。
また、自動生成は、手動による労力も省き、ＸＭＬマンページソースファイルからサポートファイルを生成する際に起こり得る問題として、人間のエラーも除去する。
【００３７】
さらに、ＸＭＬマンページソースコード４０６を他の変換４３２に適用して、他の出力フォーマット４３４を生成することもできる。
例えば、本発明の一実施の形態によれば、他の変換４３２には、ＸＭＬマンページソースコードの情報をＳＧＭＬ  ＤｏｃＢｏｏｋへ変換して、フレームメーカ（Framemaker）に使用する出力を生成することが含まれ得る。
フレームメーカは、カリフォルニア州サンノゼのAdobe Inc.が提供し、人気のある編集用のデスクトップパブリッシングソフトウェア製品であり、ＤｏｃＢｏｏｋフォーマットのデータをインポートすることができる。
既知のように、ＤｏｃＢｏｏｋは、文書作成用の業界標準である。
ＤｏｃＢｏｏｋに関する情報は、http://www.oasis-open.orgのＯＡＳＩＳ、すなわち構造化情報標準の推進機関（Organization for the Advancement of Structured Information Standards）から入手することができる。
フレームメーカのフォーマットを有するマンページは、その後、フレームメーカで操作することができ、コードと共に出荷される他の印刷された（またはＰＤＦ）文書に統合することができる。
ＸＭＬマンページソースをＳＧＭＬ  ＤｏｃＢｏｏｋに変換したものをフレームメーカにインポートすることにより、マンページの内容を複製する必要も再入力する必要もなく、他の文書がマンページの内容を有することが可能になる。
したがって、コード開発サイクルの終了近くで行われた変更が、他の発行される文書に反映される可能性がより高くなる。
【００３８】
また、ＸＭＬフォーマットは、他の型のオペレーションも容易にする。
例えば、結果プロセッサ４２４、問い合わせ結果４２６、問い合わせプロセッサ４２８、および問い合わせインターフェース４３０を参照して、構造化されたＸＭＬマンページソースコード４０６を利用する問い合わせインターフェースを設計することができる。
例えば、セキュリティコマンドであるコマンド用に提供されたすべての例の表示を要求する問い合わせを発行することができる。
その問い合わせ結果４２６は、セキュリティコマンドごとにマンページ全体を提示するのではなく、セキュリティコマンドであるマンページの例の部分のみを返す。
この問い合わせの例は、ＸＭＬの柔軟性を例示したものにすぎず、可能な応用の範囲を限定することを意味するものではない。
さらに別の例として、ＸＭＬファイルの構造により、必要に応じて、出力文書をさらに分割することが可能である。
【００３９】
図５は、本発明の一実施の形態による、ＸＭＬマンページソースファイル５０２からの情報を変換して並べ替え、マンページ５０６を自動的に生成することを示す例示的な図である。
ＸＭＬマンページソースコード５０２の例示的な部分を、Ａ〜Ｙのラベルを付けた複数のソース入力により示す。
所与のコマンドを記述するためのソース入力は、実際には、例示的な図５に示すものよりもさらに多く存在することがある。
【００４０】
本発明の一実施の形態によれば、変換エンジン５０４は、「プッシュ（push）」型変換とは対照的な「プル（Pull）」型のＸＳＬＴ（拡張可能スタイルシート言語変換（Extensible Stylesheet Language Transform））変換である。
ＸＳＬＴは、Ｗ３Ｃ（ワールドワイドウェブコンソーシアム）勧告に準拠した文書変換を記述するための標準プログラミング言語である。
Ｗ３Ｃ勧告自体は、http://www.w3.org/TR/1999/REC-xslt-19991116.html（２００３年4月現在）で入手することができる。
「プル」型変換は、所定の順序で並んでいないあらゆるデータを自動的に並べ替える。
他方、「プッシュ」型変換は、データを取り込み、そのデータが提示されたのと同じ順序でそのデータを配置する。
「プル」型変換を使用することにより、変換エンジンの出力ファイルの要素の順序付けは、入力ファイルの要素の順序付けから好都合に独立したものとなる。
したがって、ＸＭＬマンページソースファイルに存在し得る情報の順序付けに関する不整合は、その情報の出力マンページ５０６における提示順序に影響を与えない。
【００４１】
図５を参照して、ＸＭＬマンページソースコード５０２のソース入力Ｄの<name>（<名前>）は、結果マンページ５０６のNAME（名前）入力に直接変換される。
ソース入力Ｅおよびソース入力Ｆは、「acommand-does something」（ａコマンド−あることを行う）５１０に変換される。
ＸＭＬソースコード５０２のソース入力Ｈの<synopsis>（<概要>）は、結果マンページ５０６のＳＹＮＯＰＳＩＳ（概要）５１２に変換される。
ＸＭＬマンページソースコード５０２のソース入力ＨからＯは、結果マンページ５０６の「acommand ［-o param］」（ａコマンド  ［−ｏ  パラメータ］）に変換される。
ＸＭＬマンページソースコード５０２のソース入力Ｐの<description>（<説明>）は、結果マンページ５０６のＤＥＳＣＲＩＰＴＩＯＮ（説明）５１６に変換される。
ソース入力Ｑの<summary>This command does what you expect it to do.</summary>（<概要>このコマンドはあなたがそのコマンドに要求することを行う。
<／概要>）は、結果マンページ５０６の「This command does what you expect it to do」（このコマンドはあなたがそのコマンドに要求することを行う）５１８に変換される。
【００４２】
ＸＭＬマンページソースコード５０２のソース入力Ｓ〜Ｔの<authors>（<著者>）は、結果マンページ５０６の「AUTHORS…」（著者…）５２０に変換される。
ＸＭＬマンページソースコード５０２のソース入力Ｕ〜Ｖの<diagnostics>（<診断>）は、結果マンページ５０６の「DIAGNOSTICS…」（診断…）５２２に変換される。
ＸＭＬマンページソースコード５０２のソース入力Ｗ〜Ｘの<returnValues>（<戻り値>）は、結果マンページ５０６の「RETURN VALUES」（戻り値）５２４に変換される。
【００４３】
ＸＭＬマンページソースコード５０２のソース入力Ｓ〜Ｔの<AUTHORS>は、ソース入力Ｗ〜Ｘの<RETURNVALUES>の前に現れているが、「プル」型ＸＬＳＴ変換５０４は、ソース入力で得られた情報を単に並べ替えるだけであるので、結果マンページ５０６は、所定の順序になる、すなわち<RETURN VALUES>は、結果マンページ５０６の<AUTHORS>の前に現れることに留意すべきである。
【００４４】
上記から分かるように、本発明により、ＸＭＬソースファイルでの情報の配列順序に関係なく、出力結果マンページでは整合した順序で情報を提示することが可能になる。
したがって、情報は、整合した順序およびフォーマットでユーザに提示され、結果マンページは、よりユーザフレンドリなものとされる。
【００４５】
先に述べたように、ＮＲＯＦＦフォーマットという媒介物を用いることなく、図５に示すように変換を行うことができる。
しかしながら、下位互換性の理由により、必要に応じてＮＲＯＦＦ変換に着手することもできる。
図５において、変換エンジン５０４は、ＮＲＯＦＦファイルを出力することができ、次いで、ＮＲＯＦＦファイルを実行して、結果マンページ５０６を生成することができる。
【００４６】
上述したように、同じＸＭＬマンページソースコードは、パーサコードを生成することにも使用される。
図６Ａ，図６Ｂは、ＸＭＬマンページソースファイルｃｍｄ．１．ｘｍｌ６０２からの例示的なコマンドのパーサ変換６０４を示している。
一実施の形態では、Ｘａｌａｎ変換エンジン６０４が使用されて、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ６０６およびファイルｃｍｄ．ｇ６０８が、ＸＭＬマンページソースファイルから作成される。
これらのファイルは、次に、ＡＮＴＬＲのようなパーサジェネレータに入力されて、所望のパーサコードが生成される。
Ｘａｌａｎは、http://xml.apache.org（２００３年４月現在）から入手することができるオープンソースのＸＳＬＴ変換エンジンである。
ＡＮＴＬＲは、パブリックドメインのパーサジェネレータであり、www.antlr.org（２００３年４月現在）から入手することができる。
【００４７】
ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の部分リストを、図６Ａにおいて、ｃｍｄ．１．ｘｍｌ（６０２）を表すブロックの下に示す。
同様に、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ（６０６）の部分リストを、図６Ａ上部において、ｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ（６０６）を表すブロックの下に示す。
ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ（６０６）は、パーサとコードの残りの部分との間のインターフェースとして考えることができる。
また、図６Ａの右側下部において、ｃｍｄ．ｇ（６０８）を表すブロックが示すファイルｃｍｄ．ｇ（６０８）の部分リストは、図６Ｂに示されている。
ファイルｃｍｄ．ｇ（６０８）は、パーサ入力コードファイルと考えることができ、パーサジェネレータによって入力されて、パーサコードを生成する。
【００４８】
ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）のリストは、コマンド名部６１０および概要部６１２の２つの主要部を含む。
一般的に言えば、コマンド名部６１０は、コマンドの名前を定義し、概要部６１２は、特に、コマンド名部６１０のコマンドの利用可能なオプションおよびパラメータを定義する。
【００４９】
コマンド名部６１０に基づいて、変換エンジン６０４は、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）からコマンド名を抽出する。
例えば、コマンド名ｃｍｄ（６１４）が、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）のコマンド名部６１０から抽出されて、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ６０６の変数ｃｍｄ（変数コマンド）（６１６）に代入される。
同様に、コマンド名ｃｍｄ（６１４）が、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）のコマンド名部６１０から抽出されて、ファイルｃｍｄ．ｇ（６０８）の変数ｃｍｄ（６１８）に代入される。
このように、ＸＭＬマンページソースファイルに含まれるコマンドの名前を抽出して、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ６０６およびｃｍｄ．ｇ６０８を構築することができる。
【００５０】
概要部６１２は、インターフェースファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ（６０６）およびパーサ入力コードファイルｃｍｄ．ｇ（６０８）を生成するのに十分な情報を含む。
以下の例は、このことを例示する。
概要部６１２を参照して、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の式「synopsis flag="-"」（概要フラグ＝「−」）（６２０）は、ファイルｃｍｄ．ｇ６０８の「Flag : '-'」（フラグ：『−』）（６２２）に変換される。
ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の式「<option>v</option>」（<オプション>ｖ<／オプション>）（６２４）は、抽出されて、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ６０６内の式「public static Boolean option_v = false;」（public static Boolean オプション＿ｖ＝false（偽）；）に使用される。
また、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の同じ式「<option>v</option>」（６２４）は、抽出されて、パーサ入力コードファイルｃｍｄ．ｇ（６０８）の式「Opt_v: 'v'」（オプション＿ｖ：「ｖ」）（６２８）にも使用される。
【００５１】
異なる型のオプショングループを与えると、例えば、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の式「<group choice="opt">」（<グループ選択＝「オプション」>）（６３０）は、パーサ入力コードファイルｃｍｄ．ｇ（６０８）の式「OPT2 : (OPT2_1|OPT2_2|OPT2_3)*」（オプション２：（オプション２＿１｜オプション２＿２｜オプション２＿３）＊）（６３２）に変換される。
図６Ａには、ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ（６０２）の式「<group choice="opt">」（<グループ選択＝「オプション」>）（６３０）の下位の要素の１つである式「<option>T</option>」（<オプション>Ｔ<／オプション>）'６３４）を示している。
式「<option>T</option>」（６３４）のＴの値は、抽出されて、ファイルｃｍｄ＿ｓｙｍｂｏｌｓ．ｊａｖａ（６０６）の式「public static Boolean option_T = false;」（public static Boolean オプション＿Ｔ＝false（偽）；）（６３６）に使用され、また、パーサ入力コードファイルｃｍｄ．ｇ（６０８）の式「Opt_T:'T'」（オプション＿Ｔ：「Ｔ」）（６３８）にも使用される。
【００５２】
上記例は、パーサインターフェースファイル（６０６）およびパーサ入力コードファイル（６０８）を導出するために行われる変換の一部にすぎないことに留意されたい。
この場合には、Ｘａｌａｎが、変換エンジンとして使用されるが、本発明は、どの特定の変換エンジンにも限定されるものではない。
同様に、ＡＮＴＬＲパーサジェネレータを使用して、パーサコード入力ファイル（６０８）からパーサコードを生成できることを検討したが、本発明は、どの特定のパーサジェネレータにも限定されるものではない。
この開示を与えると、当業者は、他の変換エンジンおよび／またはパーサジェネレータが、ＸＭＬ入力ソースファイルからパーサコードを生成するように適合可能であることを容易に理解する。
【００５３】
上述したように、使用法テキストも、ＸＭＬマンページソースコードに含まれる情報から得ることができる。
図７Ａおよび図７Ｂは、本発明の一実施の形態による使用法テキストを生成する２つの例示的な手法を示す図である。
図７Ａは、使用法テキストの実行時の生成を示し、図７Ｂは、使用法テキストのコンパイル時の生成を示している。
【００５４】
図７Ａを参照して、コマンドプログラム７０２が、オプションの表示プログラム７０４を実行して、変換エンジン７０８を起動する。
表示プログラム７０４は、オプションであり、使用法テキスト７１２の表示に提供される量情報を制御するために追加される柔軟性を提供する。
コマンドプログラム７０２は、変換エンジン７０８に対して、実行される変換（１つまたは複数）を記述する。
また、変換エンジン７０８は、入力として使用法変換７１０およびＸＭＬソースコードファイルＣｍｄ．１．ｘｍｌ（７０６）も取り込む。
使用法変換７１０は、例えば、Ｃｍｄ．１．ｘｍｌ７０６から抽出される使用法情報を記述したものを含む。
使用法変換７１０は、例えばＸＳＬＴ技術を使用して実施することができる。
【００５５】
表示プログラム７０４に応じて、ＸＭＬソースコードファイルＣｍｄ．１．ｘｍｌ７０６のさまざまな要素を表示することができる。
例えば、概要、コマンド使用法の例、または使用法テキストを表示するように、表示プログラム７０４をプログラムすることができる。
【００５６】
図７Ｂを参照して、使用法テキストの生成は、主としてコンパイル時に行われる。
このことは、例えば、ＸＭＬソースファイルが実行時に利用可能でない場合に有用となり得る。
ＸＭＬソースファイルｃｍｄ．１．ｘｍｌ７５０は、変換エンジン７５４を介して変換され、ＸＳＬＴ使用法変換ファイル７５６および内容制御ファイル７５８に応じて、使用法テキストメソッドソースファイル７５２を生成することができる。
内容制御ファイル７５８は、図７Ａの表示プログラム７０４と同様の機能を実行する。
【００５７】
ｊａｖａコンパイラまたはＣコンパイラ７６２が、使用法テキストメソッドソースファイル７５２とコマンドプログラムソースファイル７６０とを結合して、コマンドプログラム７６４を作成する。
このコマンドプログラム７６４は、その後、実行時に実行されて、使用法テキスト７６６の表示を生成することができる。
この実行は、例えば、ヘルプ機能が起動された時に行うことができる。
例えば、「-h」オプションが続くコマンドが、スクリーン上に表示される使用法テキスト７６６の表示を起動することができる。
【００５８】
上記から分かるように、本発明は、マンページおよび他のサポートファイルの開発を悩ませてきた多くの問題に対処する。
コマンドコードの任意の所与の繰り返しについて、本発明では、サポートファイルを自動的に、かつ、同じＸＭＬソースファイルから生成することができる。
マンページ、パーサコード、および使用法テキストのようなサポートファイルは、すべてＸＭＬソースファイルから自動的に作成されるので、これらのサポートファイル間が一致しないという問題は、実質的に除去される。
さらに、サポートファイルを単一のソースファイルから自動的に生成できるので、労力および時間の大幅な節減に加えて、人間により誘発されるエラーの頻度の大幅な低減も実現することができる。
【００５９】
さらに、ＸＭＬソースファイルは、パーサコードを生成するのに必要な情報を含むので、本発明では、コマンドコードがコンパイル可能となる前であっても、ＸＭＬソースファイルを作成することができる。
この条件により、コマンドコードの任意の所与の繰り返しについて、ＸＭＬソースファイルを適時更新することが保証される。
したがって、サポートファイル（本発明では、ＸＭＬソースファイルから自動的に導出される）とコマンドコードとが一致しないことに関連した問題も、実質的に除去される。
【００６０】
また、ＸＭＬおよびその構造化データの記述機構を使用することも、多くの利点を提供する。
ＮＲＯＦＦは、限定的で柔軟性のない言語であるのに対して、ＸＭＬは、多くの異なる用途を有し、広く使用される技術であり、ＸＭＬで文書化を行うタスクの技術者の負担を少なくする。
上述したように、ＸＭＬ（または同様の技術）によって、技術者は、ＤＴＤのような技術を使用することにより、データチェックおよびエラーチェックを非常に効率的かつ正確な方法で行うことが可能になる。
【００６１】
この発明を、いくつかの好ましい実施の形態の観点から説明してきたが、この発明の範囲内に含まれる変更、置換、および均等物が存在する。
本発明の方法および装置を実施する多くの代替的な方法が存在することにも留意すべきである。
したがって、添付した特許請求の範囲は、本発明の真の精神および範囲に含まれるすべての変更、置換、および均等物を含むものとして解釈されるということが意図されている。
【図面の簡単な説明】
【００６２】
【図１】コマンドおよび関連したマンページを作成するプロセスを示す従来技術のフロー図である。
【図２】リリースされたコードとマンページとの間の不整合がどのようにして製品に発生し得るかの従来技術の例である。
【図３】コマンドコードから得られるパーサコード、使用法テキスト、およびマンページの作成および更新の従来技術のロセスを示す従来技術のフロー図である。
【図４】本発明の一実施の形態による、単一のＸＭＬマンページソースファイルを使用して、マンページ、使用法メッセージファイル、パーサコードファイルなどのサポートファイルを一致させて生成することを示すブロック図である。
【図５】本発明の一実施の形態による、ＸＭＬマンページソースファイルからの情報を変換して並べ替え、マンページを自動的に生成することを示す例示的な第１の図である。
【図６Ａ】本発明の一実施の形態による、ＸＭＬマンページソースファイルからの例示的なコマンドのパーサ変換を示す第２の図である。
【図６Ｂ】本発明の一実施の形態による、ＸＭＬマンページソースファイルからの例示的なコマンドのパーサ変換を示す図である。
【図７Ａ】本発明の一実施の形態による使用法テキストの実行時の生成を示す図である。
【図７Ｂ】本発明の一実施の形態による使用法テキストのコンパイル時の生成を示す図である。
【符号の説明】
【００６３】
７０４・・・表示プログラム、
７０２・・・コマンドプログラム、
７１０・・・使用法変換、
７０８・・・変換エンジン、
７６０・・・コマンドプログラムソースファイル、
７５４・・・変換エンジン、
７５２・・・使用法テキストメソッドソースファイル、
７６２・・・コンパイラ、
７６４・・・コマンドプログラム、
【図１】
2004348737.tif 000003
【図２】
2004348737.tif 000004
【図３】
2004348737.tif 000005
【図４】
2004348737.tif 000006
【図５】
2004348737.tif 000007
【図６Ａ】
2004348737.tif 000008
【図６Ｂ】
2004348737.tif 000009
【図７Ａ】
2004348737.tif 000010
【図７Ｂ】
2004348737.tif 000011