2024/01/17

DXL Step-by-Step:#21)段落内に入るオブジェクト

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

近い将来、DXL を利用したサンプル DB の公開の計画があり、そこで使用する機能までは記事にしておきたいと、この連載を連投しています。もうしばらく DXL ネタが続きますが、ご了承ください。また、サンプル DB が公開されましたら改めて紹介記事を投稿いたします。

さて、前回までは段落を表す par ノードの定義について数回にわたってまとめました。要は段落全体の書式設定に当たる部分でした。今回からは、par ノードの中身、段落内のコンテンツがどのように表現されるかについてまとめます。


サンプルと DXL

サンプルデータとしてリッチテキストに次のようなデータを入力した文書を作成してみました。

文字だけでなく、イメージリソースや URL リンクなどを配置しています。なお、各行は Shift + Enter で改行しており、全体が一つの段落となるようにしています。

この文書を DXL に変換すると、リッチテキストフィールドは次のように表現されます。

まず、par ノードは1つしかありませんので、段落が 1 つであることがわかりますね。

そして par ノードの中には、入力した文字やさまざまなサブノードが作成されていることが確認できます。このように、各種ノードを順に配置することにより、段落内に柔軟にオブジェクトを配置できる仕組みとなっています。

では、各サブノードを順に確認しましょう。


テキスト

最初は文字(テキスト)です。DXL の以下の部分です。

入力した文字がそのまた羅列されているただの文字列ですが、DXL では、これもノードとして取り扱われます。NotesDOM クラスでは、NotesDOMTextNode で扱われます。タグで挟まれていないのが特徴ですね。


段落内の改行

次は Shift + Enter で入力する段落内の改行です。ノードは次の通り "<break />" となります。


画像

画像は <picture> タグで表されます。属性で画像のサイズを指定しています。また、サブノードで表示する画像を指定しています。今回はイメージリソースなので、その名称を指定されていることがわかります。

画像の横には『← 左の画像はイメージリソースです』と表示していました。この文字列が <picture> タグに続き、テキストノードとして出力されています。このような構造となることで画像の横に文字列(テキスト)が配置できています。


文字の装飾

次は太字や色の変更を行う文字の装飾です。まず、<run> というタグで設定する範囲を決定し、サブノードとして装飾の設定 <font> タグとテキストノードが存在します。

<run> というタグ名からこの機能が想像できないので、辞書で run という単語を調べてみたところ、『[範囲などが]及ぶ、広がる』という意味があるようです。私は英語は苦手なのですが、きっとこれが理由なのでしょうね...


URL リンク

最後の例は、URL リンクです。以下の赤枠の部分が URL リンクの DXL です。URL は href 属性で表されていますね。また、リンクの文字列はテキストノードとなっていますが、装飾を指定するため <run> ノードで括られています。

URL の前後には、リンクではない文字列を配置していました。これらが、<urllink> タグの前後に存在します。ここまでの例を総合すると”なるほど”という感じですね。


まとめ

段落 <par> ノードの中に配置されるサブノードを事例とともに紹介しました。どのような構造でリッチテキスト内のコンテンツ(オブジェクト)が管理されいるのか概要がつかめたかと思います。

今回は概要をつかむことが目的だったので、各オブジェクトのノード名を紹介する程度の解説にとどめました。 今後はそれぞれのオブジェクトについて掘り下げたいと思います。

前回 DXL Step-by-Step 次回


0 件のコメント:

コメントを投稿