2023/11/02

DXL Step-by-Step:#8)イメージリソース(設計要素)の DXL

DXL 活用の調査・検証で、実現できたことや発見したことご紹介する『DXL Step-by-Step』シリーズの第 8 回です。

今回はイメージリソース(設計要素) を DXL でアクセスして構造を確認します。


イメージリソースの取得

まずは、次のようなイメージリソースを準備しました。

プロパティのフィールドタブを確認すると $TITLE フィールドに設計要素の名前が確認できます。

この構造は 第 5 回 で紹介したエージェント同じですね。今回も同様方法で設計要素を文書で取得してみましょう。サンプルコードも 第 5 回 とほぼ同じで、次の通りです。

Option Declare
Private xns As NotesSession

Sub Initialize
   Dim ndb As NotesDatabase
   Dim ndAgent As NotesDocument

   Set xns = New NotesSession
   Set ndb = xns.CurrentDatabase

   Dim nnc As NotesNoteCollection
   Set nnc = ndb.CreateNoteCollection(False)
   nnc.SelectImageResources = True
   nnc.SelectionFormula = xGetFormula("TitleS.PNG")

   Call nnc.BuildCollection()

   Dim dprs As NotesDOMParser
   If nnc.Count > 0 Then
      Set ndAgent = ndb.GetDocumentByID(nnc.GetFirstNoteID)
      Set dprs = xGetDOMParser(ndAgent)

      Call xSaveDXL(dprs)
   End If
End Sub

ポイントは赤字の部分です。まず、イメージリソースを取得するので SelectImageResources プロパティに True をセットしています。次にリソース名を検索する式を SelectionFormula に指定しています。

なお、使用している関数は以前作成したものをそのまま利用しています。コードについては、xGetFormula は 第 5 回、xSaveDXL は 第 6 回 を参照ください。


イメージリソースの DXL

実行して取得した DXL は次の通りです。

まず、設計要素全体を表す imageresource エレメントとなっており、name 属性に設計要素名が入っています。

また、imageresource エレメントの中には、png  エレメントがあります。ファイルの形式がエレメント名になっていて、その配下の文字列がファイルの中身となっています。

ファイルの中身を表すエレメントの後にフィールドがいくつか存在します。

設計要素のプロパティで確認したフィールドは多数ありましたが、今回の事例では、item エレメントは 3 つだけでした。残りはというと、imageresource エレメントの属性として存在しています。

フィールドによって処理が違うということですね。


まとめ

今回は、イメージリソース(設計要素)を DXL で確認しました。次回は、この DXL から画像ファイルを取り出す方法についてまとめます。


前回 DXL Step-by-Step 次回

0 件のコメント:

コメントを投稿