2024/01/03

DXL Step-by-Step:#14)文書のフィールドと DXL

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

今回は文書内の主なフィールドがのように DXL で表現されているかまとめます。文書にテストしたい形式のフィールドを作成し、DXL に出力した結果を整理します。


フィールドと DXL

まずは、基本的なフィールド形式を調査します。テキスト、数値、日付フィールドに単一の値と複数値(リスト値)をセットした場合の DXL です。

種類 単数値
複数値
テキスト <item name='Text'>
    <text>テキスト</text>
</item>
<item name='Texts'>
  <textlist>
    <text>テキスト1</text>
    <text>テキスト2</text>
  </textlist>
</item>
数値 <item name='Number'>
  <number>123</number>
</item>
<item name='Numbers'>
  <numberlist>
    <number>111.11</number>
    <number>2.2222</number>
  </numberlist>
</item>
日付 <item name='Datetime'>
  <datetime>20240102</datetime>
</item>
<item name='Datetimes'>
  <datetimelist>
    <datetime>20240101</datetime>
    <datetime>20240102</datetime>
  </datetimelist>
</item>

item タグの name 属性でフィールド名を表しています。これは、すべてのフィールドタイプで共通ですね。

DXL はただの文字列ですので、データ型を示すタグ <text>、<number>、<datetime> で値の型を表し、そのタグで囲われた範囲が値となります。複数値の場合は、<???list> とどのような型のリスト値か示し、その中に値が羅列される構造となっています。

単数か複数値で階層構造が違う点に注意が必要ですね。


選択フィールド

フォームに作成できるフィールドには、ダイアログリストやチェックボックスなど選択を補助する UI を持ったフィールドが存在します。

これらのフィールドは、文書のプロパティで見るとテキストフィールドと同じ形式でデータを保持しています。DXL での表現もテキストフィールドと同じとなります。例えば "CheckBox" というチェックボックスフィールドで、"bbb" と "ccc" をチェックした場合、次のようになります。

<item name='CheckBox'>
  <textlist>
    <text>bbb</text>
    <text>ccc</text>
  </textlist>
</item>

フォームは、文書を表示するためにデザインや UI を提供する設計であり、文書(データ)とは分離して保持していることがよくわかりますね。


リッチテキスト

リッチテキスト内には、テキストだけでなく、表や画像、添付ファイルなどさまざまなオブジェクトを保存できるとても便利なフィールドです。このフィールドの中身についても、DXL は対応しています。単純な例でですが、リッチテキストを DXL に変換すると次のようになります。


<item name='Body'>
  <richtext>
    <pardef id='1'/>
    <par def='1'>
      ここは
      <run>
        <font size='12pt' style='bold' color='red'/>
        リッチテキスト
      </run>
      です。
    </par>
  </richtext>
</item>

フィールド内のデータ型を表す部分が <richtext> となっていて、その内部にリッチテキスト内のオブジェクトが文字列(DXL)で表されるという構造であることがわかります。フォントのサイズや装飾がタグや属性で表現されていることが読み取れますね。


次回以降の予告

リッチテキストをプログラムで操作するには、LotusScript の NotesRichTextItem などの標準クラスを使用することになります。詳しくは、別の連載『リッチテキストの基本操作』でまとめていますので必要に応じて参照ください。この連載の 第 13 回 の最後で少し触れましたが、標準クラスリッチテキスト内のすべての操作を行えるわけではなく、一部操作できないことがあります。

DXL では、リッチテキスト内部をかなり詳細に表現してくれます。構造を理解し、プログラムで操作することにより、標準クラスでは実現できなかったことができるようになります。

次回からは、リッチテキストの内部構造を紐解いていきたいと思います。まだまだ調査中の段階ではあるのですが、わかったことから順にまとめます。

前回 DXL Step-by-Step 次回

0 件のコメント:

コメントを投稿