前回は DXLの概要について説明しました。今回は LotusScript で既存文書を DXL に変換する方法を説明します。
サンプルプログラムの紹介
このサンプルプログラムは、ビューで選択した文書を DXL に変換し、同じ DB 内に文書として保存します。その文書は、Form が "DXL" で、Body というリッチテキスト内に変換した DXL を保存します。
なお、変換元の文書は、『Project KEEP 体験』シリーズで使用した郵便番号マスタをサンプルとして使用しています。
◇ 処理の実行
変換したい文書を開き、エージェント(後述)を実行します。
◇ 実行結果
次のような文書が新規に作成され、変換された DXL を確認できます。
前回デザイナーで DXL を確認した際には、GUI で階層化されて表示されていたので、XML らしくありませんでしたが、この結果を見ると、マークアップランゲージらしくタグで構造化されたテキストデータということがよくわかります。
DXL の中身をざっと見ると、文書のプロパティで確認できるような情報のみとなっています。項目のラベルやフォームのタイトルなどはフォームの設計ですので、含まれていません。ノーツは文書とフォームは別管理であることがよくわかりますね。
サンプルプログラム
次のプログラムで DXL 変換を実行します。エージェントとして記述し、選択文書に対して実行する設定とします。
Option Declare Private xns As NotesSession Private xndb As NotesDatabase Sub Initialize Dim ndc As NotesDocumentCollection Dim nd As NotesDocument Dim sDXL As String Set xns = New NotesSession Set xndb = xns.CurrentDatabase Set ndc = xndb.UnprocessedDocuments Set nd = ndc.GetFirstDocument '1文書目を処理 sDXL = xGetDXL(nd) 'DXL に変換 Call xSaveDXL(sDXL) 'DXL を文書に保存 End Sub Function xGetDXL(vnd As NotesDocument) As String Dim dexp As NotesDXLExporter 'Dominoデータ → DXL Set dexp = xns.CreateDXLExporter xGetDXL = dexp.Export(vnd) 'DXL をテキストで取得 End Function Function xSaveDXL(vsDXL As String) As Boolean Dim nd As NotesDocument Dim nrti As NotesRichTextItem Set nd = xndb.CreateDocument() nd.Form = "DXL" nd.Title = "DXL #2" Set nrti = nd.CreateRichTextItem("Body") Call nrti.AppendText(vsDXL) xSaveDXL = nd.Save(True, False) End Function |
DXL に変換する部分は、関数 xGetDXL にまとめられています。使用しているクラスやメソッドを確認しましょう。
NotesDXLExporter クラス
このクラスは、Domino データ(文書や設計要素)を DXL に変換(エクスポート)するためのオブジェクトです。
NotesDXLExporter (LotusScript®)
このクラスは、DXL に関して様々な機能を提供するのですが、単に Domino データを DXL 化するだけであれば、Export メソッドを使用するだけです。
このメソッドは、引数で指定した Domino データ(今回は文書)を DXL に変換して、その結果を文字列で返します。
Export (NotesDXLExporter - LotusScript®)
前回 | DXL ことはじめ | 次回 |
0 件のコメント:
コメントを投稿