0

HDFデータセット

元サイト

データセットとHDFファイル

ディスクからデータセットの要素をロードすると便利です。通常、データはHDFと呼ばれているClearSilverファイル形式からロードされます、しかし、XMLまたはもう一つのフォーマットから簡単にロードすることもできます。

HDFは、Hierarchical Data Formatの略です(はい、別のHDF)。それは、任意に混在させることができ、データセットの階層を表現するための2つの異なる構文をサポートしています。最初は単純な点線のパススキームである:

Page.Name = My Index
Page.URL = /myindex.html
Page.Menu.0 = Home
Page.Menu.1 = Preferences
Page.Menu.2 = Help
Page.Menu.3 = Support

第二は、ネストされた要素スキームである:

Page {
  Name = My Index
  URL = /myindex.html
  Menu {
    0 = Home
    1 = Preferences
    2 = Help
    3 = Support
  }
}

HDFファイル内の階層は、任意にネスト状でありえて、望まれるどんなデータ・エレメントでも含むことがありえます。 たとえば、上のメニューのフォーマットを広げるために、我々は以下を加えることができました:

Page {
  Menu {
    0 {
      Name = Home
      URL = /
    }
    1 {
      Name = Preferences
      URL = /prefs
    } 
    2 {
      Name = Help
      URL = /help.html
    }
    3 {
      Name = Support
      URL = /feedback/
    }
  }
}

HDFのためのAPIがこれらのフォーマットでファイルを読込み及び書込みを行うことをサポートするので、HDFは大きな構成または持続言語として用いられることができます。しかし、ここではその主な目的は、ClearSilverテンプレートで使用するためのデータセットに静的な要素をロードすることです。

ClearSilverテンプレートがレンダリングされると、データセット内の特定の変数を参照またはデータセット階層内の特定の時点でのすべての要素を反復処理することができます。たとえば、上記のHDFデータセットをレンダリングしたCSテンプレートは、各メニュー項目の.NAMEと.URLの要素をレンダリングする、Page.Menuを反復することができます。

HDFファイルの構文の2つの重要な部分があります。

  1. 名前は、等号の代わりにコロンを使用して別の名前の内容をコピーすることができます。例えば、
    Page.Name : Page.Menu.0.Name

    これはPage.NameはPage.Menu.0.Nameと同じであることを意味します。
    あなたはPage.Menu.0.Nameをコピーする前にPage.Nameを定義する必要があることに注意してください。

  2. Nameは、複数行の文字列を値に設定することができる。これは、標準的なUNIXのシェル/ Perlの構文に似た構文を使用しています。例えば:
    Page.Name << EOM
    This is my multi-line page name.
    Isn't it spiffy?
    EOM

Takenchi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です