2024/01/13

DXL Step-by-Step:#19)pardef と par ノードの関係①

DXL 活用の調査・検証で、実現できたことや発見したことご紹介する『DXL Step-by-Step』シリーズの第 19 回です。リッチテキストの構造を理解する上で一番不明瞭と思われる pardef と par ノードの関係について整理します。


pardef と par ノードとは

まずはおさらいです。#15)リッチテキストを構成する基本要素 で、これらノードの役割を紹介しました。

  • pardef ノードは段落のスタイルを定義
  • par ノードは段落のコンテンツを定義
  • par ノードに適用されるスタイルは、def 属性に pardef の id で指定

上記 DXL を例にすると、段落スタイル(pardef ノード)の id は '1' と '2' の 2 種類が定義されいいます。コンテンツ(par ノード)で、def='1' のなっている行は '1'、def='2' のなっている行は '2' の段落スタイルが適用されます。リッチテキスト内で同じスタイルを複数回使用する場合、事前に定義した id を指定するだけでよく、記述が簡素化できるようになっています。

また、pardef による定義は、par ノードで使用する前に定義しておく必要があるようです。


なお、入力の仕方にもよるのですが、スタイルの id が再利用される場合(def='1')とされない場合(def='3')がありました。同じスタイルを複数の id に定義することができるようです。そして、id の '1' は必ずしも、何も設定されていない <pardef id='1' /> に限定されているわけではなく、属性が設定されることもあるようです。


複数のフィールドの場合

3つのリッチテキストフィールドを持つフォームを作成し、それぞれに同じ段落スタイルで文字を入力した文書を作成してテストします。

これを DXL で出力すると次のようになりました。

この結果より、pardef による定義はリッチテキストごとに実施する必要があることがわかります。ところが、id の付番については文書内でユニークとなるようです。なかなか複雑?不思議?な仕様ですね。


次回の予告

今回は既存文書を DXL で出力させ、pardef と par ノードの関係を調査しました。結果、さまざまな条件や仕様が見えてきました。次回はこれらが必須条件なのか確認するため、テストの DXL を文書としてインポート(保存)させる実験を行います。


前回 DXL Step-by-Step 次回


0 件のコメント:

コメントを投稿