これらの記事の続きです:
nsf2dxl2web の挑戦(1)
nsf2dxl2web の挑戦(2)
三回目となる今回は使い方編と位置づけ、 nsf2dxl2web の使い方を紹介します。2023-11-26 の現時点ではまだツールは(招待制のみでの)非公開ですが、一部の人から徐々に使っていただくことを想定していて、その時に使い方を知ってもらうための紹介ページのつもりで作ります。
なお nsf2dxl2web は今後段階的に公開していく予定ではありますが、オープンソース化の予定は今のところありません。ツールの改変も原則認める予定はありません(次回紹介予定のカスタマイズツールで提供しているサンプルのみ改変しての利用を認めます)。
また将来的に今後の改善や変更によって UI 含めて、ここで紹介している内容と異なる部分がでてくるかもしれない、という点をご了承願います。
【前提条件】
nsf2dxl2web は以下のツール類がインストール/セットアップされている条件の下で動作します:
・HCL ノーツ(バージョン8以降であれば動くと思いますが、バージョン 10 で動作確認しています)
・Node.js(バージョン 16 で動作確認しています)
また nsf2dxl2web が変換対象とするノーツデータベースのサイズによっては動作中にメモリ不足が発生する可能性があります。当方では 16GB のメモリを搭載した Windows 11 PC で動作確認しており、この環境下でファイルサイズが約 12 GB のノーツデータベースの変換に成功した実績はあります。なおその際は notes.ini に以下の1行を追加して(ノーツ実行時の Java ヒープサイズを 512MB に増やして)実行しています:
ちなみに nsf2dxl2web を動作させるだけであればドミノサーバーは不要です(ノーツのセットアップ時に必要になるはずです)。
また後述の(1)および(2)の処理を実行するためには実行するマシンがインターネットに接続している必要がある点に注意してください。
【nsf2dxl2web ツールの取得】
いずれ GitHub リポジトリを公開して URL をここに記載する予定ですが、現時点ではプライベートリポジトリで運用しています。お手数をおかけしますが、しばらくの間は個別にリポジトリのアクセス権を与えられた後に該当 URL から git clone するか、zip でダウンロード/展開してください。
【nsf2dxl2web ツールに同梱されているもの】
ツール一式には nsf2dxl2web 本体を含めた数多くのファイルが含まれています。その中で利用者が明示的に使うことになる(可能性がある)ファイルは以下の6つです:
(1)nsf2dxl2web.nsf
(2)dxl2web.js
(3)customxsl.js
(4)viewhtml.js
(5)web.js
(6)README.md
(1)の nsf2dxl2web.nsf はデフォルトで参照権限のついたノーツデータベースで、この中に nsf2dxl エージェントが含まれています。利用者はこのデータベースをノーツで開き、アクションメニューから nsf2dxl エージェントを実行後に対象データベースを指定して nsf2dxl 処理を行います(詳しくは後述):

なお、このデータベースを起動した時に開く「アプリケーションについて」文書の内容は(6)の README.md の内容と同等です。
(2)の dxl2web.js は dxl2web 処理を行う Node.js アプリケーションです。(1)の nsf2dxl と、(2)の dxl2web の2つの処理によって nsf2dxl2web を実現します。
(3)の customxsl.js は(2)の結果として生成された静的コンテンツの文書の見た目をカスタマイズする処理で、これも Node.js アプリケーションです。文書データの UI カスタマイズが必要な場合に使います。
(4)の viewhtml.js は(2)や(3)の結果として生成されたビューやフォルダの UI をカスタマイズする処理で、これも Node.js アプリケーションです。ビューやフォルダの UI カスタマイズが必要な場合に使います。
(5)の web.js は(2)や(3)、(4)の結果生成された静的コンテンツを表示するウェブアプリケーションで、これも Node.js アプリケーションです。これを使って運用してもよいのですが、どちらかというと出来上がった静的コンテンツの見た目を一時的に確認するテスト用ウェブサーバーというつもりで同梱しています(実際の運用ではウェブサーバーとして nginx などを使うことを想定しています)。
(6)は一通りの説明(英語)を含めた README.md です。使い方も記述していますが、英語が苦手な人もいると思うので、今回このブログエントリを書いています。
【nsf2dxl2web の各ツールの使い方】
以下、上述(1)~(5)の各ツールの使い方を紹介します。
【(1)nsf2dxl2web.nsf】
ノーツデータベース(nsf)を XML データ(dxl)として出力します。厳密には単に nsf を dxl 化するだけではなく、ビューデータの CSV 化なども含んでいますが、ここではすべて含めて「nsf2dxl 処理」と呼ぶことにします。
(1)の nsf2dxl2web.nsf をノーツクライアントで開きます:

以下のようなセキュリティ警告ダイアログが表示された場合は「署名者を信頼する」を選択して実行してください:

ちなみにこのデータベースにはフォームやビュー、文書は登録されていません。エージェントと、そのエージェントが参照するスクリプトライブラリが登録されているだけです。
起動オプションによって、このような「アプリケーションについて」文書が表示されます:

この状態から nsf2dxl エージェントを実行するのですが、実行ログを表示できるように Java デバッグコンソールを表示しておきます。メニューから「ツール」-「Java デバッグコンソールの表示」を選択します:

下図のようなウィンドウが表示されます。この後に実行する nsf2dxl エージェントの実行ログはこのウィンドウ内に表示されるので、途中で(out of memory などの)エラーが発生した場合はこのウィンドウ内に出力されるので、思っていたような結果にならない場合はこのウィンドウ内に表示されるメッセージを参照してみてください:

では nsf2dxl エージェントを実行します。メニューから「アクション」-「nsf2dxl」を実行します:

以下のようなデータベースを選択するダイアログ(タイトルは「開く」)が表示されます。ここでウェブ化したいデータベースを選択します:

ちなみにここで指定しているデータベースはワークスペース上ではこのように表示されているものを使っています。後でウェブ上でどこまで再現されているかを確認してください:

データベースファイルを選択すると、そのファイルをエクスポートする先のフォルダを指定する別のダイアログ(タイトルは「保存」)が表示されます。nsf2dxl2web の処理が完了すると、ここで指定したフォルダがウェブのコンテンツルートになるフォルダなので、初めて nsf2dxl を実行した場合は中身が空のフォルダ(2回目以降は初回に指定した時と同じフォルダ)を指定します。フォルダを指定したら(下図では C:\tmp\tmp)保存ボタンをクリックします:

すると指定したデータベースファイルに対して nsf2dxl エージェントが実行され、その結果が指定したフォルダ(上の例だと C:\tmp\tmp)内にエクスポートされます。同時に実行ログが Java デバッグコンソールに表示されます:

実行結果は指定したフォルダ内に「指定したデータベースのレプリカID」のサブフォルダが作られ、その中に(上の例だと C:\tmp\tmp\49258A000002200b\ フォルダ内に)出力されていきます。この出力先フォルダ名はログの3行目にも表示されています。 また最後の行に "Processing Step.2 done." と表示されていますが、この行が表示されていれば nsf2dxl 処理が正しく実行できたことを意味しています。
この時点で出力先フォルダの様子を見ると、中には "(指定したデータベースのレプリカID)_designs.xml" というファイル(この中にフォームやイメージリソースなどの設計要素の情報が含まれています)と、"(ビュー/フォルダの UNID).csv" というファイル名でデータベース内の全ビュー/フォルダの情報が CSV 形式でエクスポートされている様子が分かります:

また "documents" というサブフォルダが作られていて、このフォルダ内にはデータベース内の全ての文書が "(文書の UNID).xml" というファイル名で出力されている様子が確認できます:

nsf2dxl 処理が成功するとこのような結果になります。ビュー/フォルダの数や、含まれる文書数によって実行にかかる時間や出力結果のファイル数や各ファイルのサイズが異なりますが、"Processing Step.2 done." というログが最後に出力されていれば成功です。逆に途中で "Out of memory" などのエラーが表示されている場合は(上述の方法でヒープメモリを確保するなどの対処をして)再度実行する必要があります。
これで nsf2dxl の処理は完了ですが、まだ dxl2web の処理ができていないため、まだウェブでの参照はできません。ただここまででノーツクライアントを使った処理は完了です。これ以降の処理はすべて Node.js がインストールされた環境下で行うことになります。
【(2)dxl2web.js】
前述の nsf2dxl でエクスポートしたデータをウェブ化します。ここでの「ウェブ化」の意味は「静的サイト化」ですが、動的な XSLT 処理で HTML を生成するため、いわゆる HTML ファイルはあまり多く作られません(文書データはすべて XML データとなります)。
まずはシェルやコマンドプロンプトなどのターミナルを起動し、cd コマンドを使って nsf2dxl2web を展開したフォルダ(dxl2web.js があるフォルダ)に移動します:

最初の一回だけは nsf2dxl2web を利用する上で必要な依存ライブラリをインストールする必要があります。依存ライブラリのインストールは dxl2web.js のあるフォルダで "npm install" を実行します:

依存ライブラリがインストールできれいれば dxl2web.js を実行することができます。カレントディレクトリを dxl2web.js があるフォルダに変更した後に以下のコマンドを入力します:
上記例では最後のフォルダ名が C:\tmp\tmp\49258A000002200B だったのでこのフォルダ名をフルパスで指定します。dxl2web.js が実行され、最後に "done" と表示されていれば処理は成功しています(対象データベース内の文書数が数百件程度であれば一瞬で終わりますが、数万レベルだと、この処理は結構時間がかかります):

あっけない感じですが、これでデータベースのウェブコンテンツ化が(一応)完了しました。
【(5)web.js】
ウェブコンテンツ化された内容に対してカスタマイズを行うこともできるのですが、それは次回に説明するとして、まずはウェブコンテンツ化された内容をブラウザで表示してみましょう。そのためのツールが web.js です。
web.js を実行前に環境変数を指定します。まず環境変数 CONTENTS_ROOT に nsf2dxl 実行時に指定した結果出力先フォルダ名(レプリカ ID を含まないもの)を、Windows の場合は "\" マークを "/" にしたものを(今回の場合だと "/tmp/tmp" を)指定します。またこれはオプションですが、起動する HTTP サーバーのポート番号(無指定時のデフォルト値は 8080)を環境変数 PORT でそれぞれ指定します:

この状態で

この HTTP サーバーにアクセスしてみましょう。ウェブブラウザで(この例の場合であれば) "http://localhost:8000" にアクセスしてみます:

(1)の処理で指定したノーツデータベース名がアイコンと共に表示されているはずです。ではこのアイコンをクリックします:

新しいタブが開き、その中で↑のような画面になります。画面は3分割されていて、それぞれ以下が表示されるフレームになっています(最初は左上のフレームだけが表示されていて、ここにデータベースの全ビュー/フォルダ、および「アプリケーションについて」「アプリケーションの使い方」へのリンクが表示されています):

左上のフレームでいずれかのビュー/フォルダを選択すると、右上のフレームでそのビュー/フォルダが表示されます:

そして右上のフレームでいずれかの文書を選択すると、下のフレームにその文書が表示されます:

ちなみに同じデータベースの同じビューと同じ文書をノーツクライアントで選択するとこのようになります。画像やフォントなどが再現されている様子が確認できると思います:

前回のブログエントリでも紹介しましたが、この文書データが表示される際に XSLT 処理が実行されています。文書データはあくまで XML データ(UI を持たないデータ)としてエクスポートされていますが、表示時にフォームの XSL が適用されることで、このように元のノーツ文書に近い UI が再現できています。
【他のデータベースにも適用】
上述した(1)の nsf2dxl 処理と(2)の dxl2web 処理を他のデータベースに対しても実行すると、対象になったデータベースすべてをウェブ化することができます。仮に5つのデータベースに同様の処理を行った後に HTTP サーバーにアクセスすると、以下のように5つのデータベースのアイコンと名前が(ノーツのワークスペースのような感じで)表示されるようになります:

各アイコンをクリックすると新しいタブが開いて同様にウェブ化されたコンテンツを表示することができます:

このシリーズの初回でも触れましたが、データベース間のリンクも再現できるようになっています。あるデータベースA内の文書の中で、別のデータベースB内のビューや文書へのリンクが作られていた場合、データベースAとB両方がこの nsf2dxl2web ツールによってウェブ化されていれば、ビューリンクや文書リンクもウェブ上で再現できます(わかりにくいと思いますが、↑の例で最初にウェブ化したデータベース内の文書からもう1つのデータベース内の文書にリンクが張られていて、そのリンクをクリックすると文書フレームの内容だけ別データベースの文書になっています):

長くなってしまったのでいったんここまでにします。次回はカスタマイズ機能について紹介する予定です。
nsf2dxl2web の挑戦(1)
nsf2dxl2web の挑戦(2)
三回目となる今回は使い方編と位置づけ、 nsf2dxl2web の使い方を紹介します。2023-11-26 の現時点ではまだツールは(招待制のみでの)非公開ですが、一部の人から徐々に使っていただくことを想定していて、その時に使い方を知ってもらうための紹介ページのつもりで作ります。
なお nsf2dxl2web は今後段階的に公開していく予定ではありますが、オープンソース化の予定は今のところありません。ツールの改変も原則認める予定はありません(次回紹介予定のカスタマイズツールで提供しているサンプルのみ改変しての利用を認めます)。
また将来的に今後の改善や変更によって UI 含めて、ここで紹介している内容と異なる部分がでてくるかもしれない、という点をご了承願います。
【前提条件】
nsf2dxl2web は以下のツール類がインストール/セットアップされている条件の下で動作します:
・HCL ノーツ(バージョン8以降であれば動くと思いますが、バージョン 10 で動作確認しています)
・Node.js(バージョン 16 で動作確認しています)
また nsf2dxl2web が変換対象とするノーツデータベースのサイズによっては動作中にメモリ不足が発生する可能性があります。当方では 16GB のメモリを搭載した Windows 11 PC で動作確認しており、この環境下でファイルサイズが約 12 GB のノーツデータベースの変換に成功した実績はあります。なおその際は notes.ini に以下の1行を追加して(ノーツ実行時の Java ヒープサイズを 512MB に増やして)実行しています:
JavaMaxHeapSize=512MB
ちなみに nsf2dxl2web を動作させるだけであればドミノサーバーは不要です(ノーツのセットアップ時に必要になるはずです)。
また後述の(1)および(2)の処理を実行するためには実行するマシンがインターネットに接続している必要がある点に注意してください。
【nsf2dxl2web ツールの取得】
いずれ GitHub リポジトリを公開して URL をここに記載する予定ですが、現時点ではプライベートリポジトリで運用しています。お手数をおかけしますが、しばらくの間は個別にリポジトリのアクセス権を与えられた後に該当 URL から git clone するか、zip でダウンロード/展開してください。
【nsf2dxl2web ツールに同梱されているもの】
ツール一式には nsf2dxl2web 本体を含めた数多くのファイルが含まれています。その中で利用者が明示的に使うことになる(可能性がある)ファイルは以下の6つです:
(1)nsf2dxl2web.nsf
(2)dxl2web.js
(3)customxsl.js
(4)viewhtml.js
(5)web.js
(6)README.md
(1)の nsf2dxl2web.nsf はデフォルトで参照権限のついたノーツデータベースで、この中に nsf2dxl エージェントが含まれています。利用者はこのデータベースをノーツで開き、アクションメニューから nsf2dxl エージェントを実行後に対象データベースを指定して nsf2dxl 処理を行います(詳しくは後述):

なお、このデータベースを起動した時に開く「アプリケーションについて」文書の内容は(6)の README.md の内容と同等です。
(2)の dxl2web.js は dxl2web 処理を行う Node.js アプリケーションです。(1)の nsf2dxl と、(2)の dxl2web の2つの処理によって nsf2dxl2web を実現します。
(3)の customxsl.js は(2)の結果として生成された静的コンテンツの文書の見た目をカスタマイズする処理で、これも Node.js アプリケーションです。文書データの UI カスタマイズが必要な場合に使います。
(4)の viewhtml.js は(2)や(3)の結果として生成されたビューやフォルダの UI をカスタマイズする処理で、これも Node.js アプリケーションです。ビューやフォルダの UI カスタマイズが必要な場合に使います。
(5)の web.js は(2)や(3)、(4)の結果生成された静的コンテンツを表示するウェブアプリケーションで、これも Node.js アプリケーションです。これを使って運用してもよいのですが、どちらかというと出来上がった静的コンテンツの見た目を一時的に確認するテスト用ウェブサーバーというつもりで同梱しています(実際の運用ではウェブサーバーとして nginx などを使うことを想定しています)。
(6)は一通りの説明(英語)を含めた README.md です。使い方も記述していますが、英語が苦手な人もいると思うので、今回このブログエントリを書いています。
【nsf2dxl2web の各ツールの使い方】
以下、上述(1)~(5)の各ツールの使い方を紹介します。
【(1)nsf2dxl2web.nsf】
ノーツデータベース(nsf)を XML データ(dxl)として出力します。厳密には単に nsf を dxl 化するだけではなく、ビューデータの CSV 化なども含んでいますが、ここではすべて含めて「nsf2dxl 処理」と呼ぶことにします。
(1)の nsf2dxl2web.nsf をノーツクライアントで開きます:

以下のようなセキュリティ警告ダイアログが表示された場合は「署名者を信頼する」を選択して実行してください:

ちなみにこのデータベースにはフォームやビュー、文書は登録されていません。エージェントと、そのエージェントが参照するスクリプトライブラリが登録されているだけです。
起動オプションによって、このような「アプリケーションについて」文書が表示されます:

この状態から nsf2dxl エージェントを実行するのですが、実行ログを表示できるように Java デバッグコンソールを表示しておきます。メニューから「ツール」-「Java デバッグコンソールの表示」を選択します:

下図のようなウィンドウが表示されます。この後に実行する nsf2dxl エージェントの実行ログはこのウィンドウ内に表示されるので、途中で(out of memory などの)エラーが発生した場合はこのウィンドウ内に出力されるので、思っていたような結果にならない場合はこのウィンドウ内に表示されるメッセージを参照してみてください:

では nsf2dxl エージェントを実行します。メニューから「アクション」-「nsf2dxl」を実行します:

以下のようなデータベースを選択するダイアログ(タイトルは「開く」)が表示されます。ここでウェブ化したいデータベースを選択します:

ちなみにここで指定しているデータベースはワークスペース上ではこのように表示されているものを使っています。後でウェブ上でどこまで再現されているかを確認してください:

データベースファイルを選択すると、そのファイルをエクスポートする先のフォルダを指定する別のダイアログ(タイトルは「保存」)が表示されます。nsf2dxl2web の処理が完了すると、ここで指定したフォルダがウェブのコンテンツルートになるフォルダなので、初めて nsf2dxl を実行した場合は中身が空のフォルダ(2回目以降は初回に指定した時と同じフォルダ)を指定します。フォルダを指定したら(下図では C:\tmp\tmp)保存ボタンをクリックします:

すると指定したデータベースファイルに対して nsf2dxl エージェントが実行され、その結果が指定したフォルダ(上の例だと C:\tmp\tmp)内にエクスポートされます。同時に実行ログが Java デバッグコンソールに表示されます:

実行結果は指定したフォルダ内に「指定したデータベースのレプリカID」のサブフォルダが作られ、その中に(上の例だと C:\tmp\tmp\49258A000002200b\ フォルダ内に)出力されていきます。この出力先フォルダ名はログの3行目にも表示されています。 また最後の行に "Processing Step.2 done." と表示されていますが、この行が表示されていれば nsf2dxl 処理が正しく実行できたことを意味しています。
この時点で出力先フォルダの様子を見ると、中には "(指定したデータベースのレプリカID)_designs.xml" というファイル(この中にフォームやイメージリソースなどの設計要素の情報が含まれています)と、"(ビュー/フォルダの UNID).csv" というファイル名でデータベース内の全ビュー/フォルダの情報が CSV 形式でエクスポートされている様子が分かります:

また "documents" というサブフォルダが作られていて、このフォルダ内にはデータベース内の全ての文書が "(文書の UNID).xml" というファイル名で出力されている様子が確認できます:

nsf2dxl 処理が成功するとこのような結果になります。ビュー/フォルダの数や、含まれる文書数によって実行にかかる時間や出力結果のファイル数や各ファイルのサイズが異なりますが、"Processing Step.2 done." というログが最後に出力されていれば成功です。逆に途中で "Out of memory" などのエラーが表示されている場合は(上述の方法でヒープメモリを確保するなどの対処をして)再度実行する必要があります。
これで nsf2dxl の処理は完了ですが、まだ dxl2web の処理ができていないため、まだウェブでの参照はできません。ただここまででノーツクライアントを使った処理は完了です。これ以降の処理はすべて Node.js がインストールされた環境下で行うことになります。
【(2)dxl2web.js】
前述の nsf2dxl でエクスポートしたデータをウェブ化します。ここでの「ウェブ化」の意味は「静的サイト化」ですが、動的な XSLT 処理で HTML を生成するため、いわゆる HTML ファイルはあまり多く作られません(文書データはすべて XML データとなります)。
まずはシェルやコマンドプロンプトなどのターミナルを起動し、cd コマンドを使って nsf2dxl2web を展開したフォルダ(dxl2web.js があるフォルダ)に移動します:

最初の一回だけは nsf2dxl2web を利用する上で必要な依存ライブラリをインストールする必要があります。依存ライブラリのインストールは dxl2web.js のあるフォルダで "npm install" を実行します:

依存ライブラリがインストールできれいれば dxl2web.js を実行することができます。カレントディレクトリを dxl2web.js があるフォルダに変更した後に以下のコマンドを入力します:
$ node dxl2web (1)の処理で DXL を出力した先のフォルダ名
上記例では最後のフォルダ名が C:\tmp\tmp\49258A000002200B だったのでこのフォルダ名をフルパスで指定します。dxl2web.js が実行され、最後に "done" と表示されていれば処理は成功しています(対象データベース内の文書数が数百件程度であれば一瞬で終わりますが、数万レベルだと、この処理は結構時間がかかります):

あっけない感じですが、これでデータベースのウェブコンテンツ化が(一応)完了しました。
【(5)web.js】
ウェブコンテンツ化された内容に対してカスタマイズを行うこともできるのですが、それは次回に説明するとして、まずはウェブコンテンツ化された内容をブラウザで表示してみましょう。そのためのツールが web.js です。
web.js を実行前に環境変数を指定します。まず環境変数 CONTENTS_ROOT に nsf2dxl 実行時に指定した結果出力先フォルダ名(レプリカ ID を含まないもの)を、Windows の場合は "\" マークを "/" にしたものを(今回の場合だと "/tmp/tmp" を)指定します。またこれはオプションですが、起動する HTTP サーバーのポート番号(無指定時のデフォルト値は 8080)を環境変数 PORT でそれぞれ指定します:

この状態で
を実行します。指定したポート(上の例だと 8000 )で HTTP サーバーが待ち受ける状態になります:$ node web

この HTTP サーバーにアクセスしてみましょう。ウェブブラウザで(この例の場合であれば) "http://localhost:8000" にアクセスしてみます:

(1)の処理で指定したノーツデータベース名がアイコンと共に表示されているはずです。ではこのアイコンをクリックします:

新しいタブが開き、その中で↑のような画面になります。画面は3分割されていて、それぞれ以下が表示されるフレームになっています(最初は左上のフレームだけが表示されていて、ここにデータベースの全ビュー/フォルダ、および「アプリケーションについて」「アプリケーションの使い方」へのリンクが表示されています):

左上のフレームでいずれかのビュー/フォルダを選択すると、右上のフレームでそのビュー/フォルダが表示されます:

そして右上のフレームでいずれかの文書を選択すると、下のフレームにその文書が表示されます:

ちなみに同じデータベースの同じビューと同じ文書をノーツクライアントで選択するとこのようになります。画像やフォントなどが再現されている様子が確認できると思います:

前回のブログエントリでも紹介しましたが、この文書データが表示される際に XSLT 処理が実行されています。文書データはあくまで XML データ(UI を持たないデータ)としてエクスポートされていますが、表示時にフォームの XSL が適用されることで、このように元のノーツ文書に近い UI が再現できています。
【他のデータベースにも適用】
上述した(1)の nsf2dxl 処理と(2)の dxl2web 処理を他のデータベースに対しても実行すると、対象になったデータベースすべてをウェブ化することができます。仮に5つのデータベースに同様の処理を行った後に HTTP サーバーにアクセスすると、以下のように5つのデータベースのアイコンと名前が(ノーツのワークスペースのような感じで)表示されるようになります:

各アイコンをクリックすると新しいタブが開いて同様にウェブ化されたコンテンツを表示することができます:

このシリーズの初回でも触れましたが、データベース間のリンクも再現できるようになっています。あるデータベースA内の文書の中で、別のデータベースB内のビューや文書へのリンクが作られていた場合、データベースAとB両方がこの nsf2dxl2web ツールによってウェブ化されていれば、ビューリンクや文書リンクもウェブ上で再現できます(わかりにくいと思いますが、↑の例で最初にウェブ化したデータベース内の文書からもう1つのデータベース内の文書にリンクが張られていて、そのリンクをクリックすると文書フレームの内容だけ別データベースの文書になっています):

長くなってしまったのでいったんここまでにします。次回はカスタマイズ機能について紹介する予定です。
(過去記事や続きはこちらです)
nsf2web2dxl の挑戦(3)
コメント