エントリーにXMLでデータを埋め込むプラグイン(その4)

エントリーにXMLでデータを埋め込むプラグインでは、配列形式のデータを扱うこともできますが、それと要素の階層化を組み合わせると、さらに活用の幅が広がります。
例えば、エントリーごとに複数枚の画像を入れる際に、画像のURLやサイズなどの情報をXML化しておくことで、レイアウトをテンプレートで自動的に行う、といったことができます。

1.XMLの例

配列と要素の階層化を組み合わせた例として、最初にあげた「画像の情報」を考えてみることにしましょう。
画像の情報としては、URL/縦横のサイズ/画像の説明などがあります。
そこで、画像1枚分の情報を「image」という名前の要素にし、その下の階層に「url」「width」「height」「alt」などの要素を入れて、image要素を配列化します。
実際にXMLを書くと、以下のような感じになります。

<!--
<XMLRecord>
<image>
  <url>foo.jpg</url>
  <width>640</width>
  <height>480</height>
  <alt>○○の画像</alt>
</image>
<image>
  <url>bar.jpg</url>
  <width>640</width>
  <height>480</height>
  <alt>□□の画像</alt>
</image>
</XMLRecord>
-->

2.データを取り出す

次に、上のようなXMLを元に、画像の情報を取り出してレイアウトするように、テンプレートタグを組みます。
例えば、以下のようにタグを組むと良いでしょう、

<MTEntryIfXML>
<MTEntryXML>
<MTEntryXMLIfFields name="image">
<p>
<MTEntryXMLFields name="image">
<img src="<$MTEntryXMLValue name="url"$>" width="<$MTEntryXMLValue name="width"$>" height="<$MTEntryXMLValue name="height"$>" alt="<$MTEntryXMLValue name="alt"$>" /><br />
</MTEntryXMLFields>
</p>
</MTEntryXMLIfFields>
</MTEntryXML>
</MTEntryIfXML>

また、このようにテンプレートを組んだ場合、1.のようにエントリーにデータが保存されていると、再構築の結果は以下のようになります。

<p>
<img src="foo.jpg" width="640" height="480" alt="○○の画像" /><br />
<img src="bar.jpg" width="640" height="480" alt="□□の画像" /><br />
</p>

この例では画像を単に縦に並べているだけですが、テンプレートタグの組み方を変えれば、画像のレイアウト方法を変えることもできます。