2023/08/08

DXL ことはじめ:#6)DXL の構造や用語の整理

前回は、NotesDOMDocumentNode クラスについて整理しました。このクラスのオブジェクトには3つのノードがあって、それぞれプロパティを確認しました。最初の2つは、宣言的なノードだったので、最後のノードである "document" とというノードが文書の中身ということになります。

以下の画像が document ノードです。概要をつかめるよう "document" ノードより下のノードは閉じてあります。

ぱっと見た限りでも、フォーム名や unid、フィールドの情報、$UpdateBy などの内部的なフィールドも確認できます。

いよいよ、文書の中身を LotusScript でアクセス... と行きたいところなのですが、ノードやエレメントなどの単語が登場し、少し複雑になってきました。ここでいったん DXL の構造や用語を整理したいと思います。


タグ(Tag)

まずは、タグ(Tag)です。上記画像で青字で表示されている部分です。マークアップランゲージで基本となる < > で囲われた文字列です。タグは、<updatedby> で始まり、</updatedby> で終わるというように対になって構成されます。

また、タグの後ろには、アットリビュート(=属性)が付加されることがあります。


アットリビュート(Attribute)

アットリビュート(属性)は、上記画像で水色で表示されている部分です。Tag の < > 内に配置され、アットリビュート名とその値を = でつないで構成されます。

例えば、"version='12.0'" や "form='zip'" がアットリビュートです。


エレメント(Element)

LotusScript では NotesDOMElementNode など "Element" という単語が登場します。エレメントは、タグで囲われた範囲全体を表すと考えるとよいかと思います。

これから LotusScript でアクセスしようとしている document ノード はエレメントです。そして、その中に含まれる updatedby や item などもそれぞれもエレメントです。

このように、エレメントは階層化することができます。


ノード(Node)

続いて、ノード(Node)です。 定義的には、XML を構成するそれぞれの要素をノードと呼びます。ですので、アットリビュートやエレメントもノードと呼ぶことができます。

これまで、何度も登場しましたが、一番あいまいと感じる用語ですね。NotesDOMElementNode クラスなど、"Node" と付くクラスが多数あります。これらはすべて DXL の要素を表すと理解するとよいかと思います。


エレメントの関係

エレメントは階層構造となると説明しました。エレメント関係表す言葉として、Parent(親)、Child(子)、Sibling(兄弟)を使用します。Parent は一つ上、Child は一つ下、Sibling は同列のエレメントとなります。

これは、ノーツの返答文書の関係を表すときに使いますのでなじみがありますね。

前回 DXL ことはじめ 次回

0 件のコメント:

コメントを投稿