部屋リスト
ファイル名: | Room list.xfd |
---|---|
レベル: | Medium |
レポートから XML: | Room -> Room list -> With area sums |
XMLサンプルファイル: | xml/rooms.xml |
キーコンセプト: | Repeating table, key/index |
これは全部屋のシンプルなリストです。
これは、drofus-xml/room-containerのデータソースペイン(3)から<room> XMLノードをドキュメント(Global XSLT window) にドラッグするだけで、
作成された部屋の繰り返しテーブル(3.6参照)を持っています。
このレポートの "hard" な部分は、この部屋が置かれているトップ機能名 (デパートメント/部門)を示す3列目です。
この列のヘッダ・フィールドは、この機能レベルの説明を含む top <level>/トップ <レベル> 属性の説明を使用します。これは以下の式を使用します。
/drofus-xml/level[1]/@description |
---|
これは単純にドキュメントの最初のレベルのノードに行き、@description属性を取得します。
列の内容を取得するには、機能的な構造を表す<level>階層を見る必要があります。この場合、<room-container>と同じ部屋はすべて見つかりますが、
room-container/room/@id属性を参照する@ref属性を持つ部屋のみが見つかります。この部屋を参照できるようにするには、インデックスが必要です。
これを作成するには、Review (レビュー)->Global XSLT window (Global XSLTウィンドウ) に以下のコードを貼り付けます。
<xsl:key match="room" name="room-ref-key" use="@ref"/> |
---|
これにより、ref属性に基づいてすべての<room>ノードのインデックスが作成されます。これを利用して、現在処理中の部屋と同じ部屋を検索することができます。
key('room-ref-key', @id) |
---|
この部屋の上のトップレベルも必要なので、フィールドの完全な式は次のようになります:
key('room-ref-key',@id)/ancestor::level[last()]/@name |
---|
これは、レベルツリーで部屋を検索し、その上にあるすべてのレベルノードを取得し、最後のノードを選んでname属性を取得します。