2024/12/27

DXL Step-by-Step:#45)添付ファイルの構造 ②

前回に続いて添付ファイルの DXL についてまとめます。

ノーツのリッチテキストには複数の添付ファイルが保存できます。しかも、同名のファイルを複数貼り付けることも可能です。このような文書が DXL でどのように表現されるのか確認しましょう。


DXL の全体像

文書全体の DXL の構造について確認します。段落を表す par ノード配下に 3 つの attachmentref ノードが存在します。これで 3 つの添付ファイルのアイコンを表しています。

添付したファイルは、同じファイル名だったのですが、name 属性には 002 など、一意になるよう名称が調整されています。

ファイルの実体を表す $FILE フィールドも 3 つ存在し、name 属性が対になるように設定されています。この機能により、アイコンとファイルの実体を関連付けています。

今回は、各ファイルの中身は同じとしたので filedata タグ内も全く同じで、データ構造的には冗長に見えます。ですが、この構造であればファイル名が同じで、中身が違う場合の対応も可能ですね。


ファイル名

3 つ目の添付ファイルに関する DXL のノードを抽出すると次の通りです。

<attachmentref name='Sample.003.txt' displayname='Sample.txt'>

<file name='Sample.003.txt' size='58' flags='storedindoc' encoding='none' hosttype='msdos' compression='none'>

添付ファイルのオリジナルファイル名は attachmentref ノードの displayname から取得するのがよさそうです。また、ファイルの実体側にはファイル名がないことも覚えておきましょう(間接的には作れそうですが...)。


まとめ

前回から 2 回にわたって添付ファイルの構造についてまとめました。次回はこの知識を使って、添付ファイルのダウンロードにチャレンジしたいと思います。


前回 DXL Step-by-Step 次回


0 件のコメント:

コメントを投稿