Take a look at the following xml. It contains one function level with one room node and a room-container with one room node:次のxmlを見てください。1つの部屋ノードを持つ1つの機能レベルと1つの部屋ノードを持つ部屋コンテナが含まれています:
<drofus-xml> <room-container> <room id="123"> <core name="foobar"/> </room> </room-container> <level> <room ref="123"/> </level> </drofus-xml> |
---|
I want to create a report which traverses the level structure and shows information about the rooms underneath them. The traversing is done by creating a repeating section with
レベル構造をトラバース (横断)し、その下にある部屋の情報を表示するレポートを作成したいと思います。トラバースは、xpath式として
xpath式として/drofus-xml/level as xpath expression. However, the room node underneath the level node is only a reference node levelを使用します。ただし、レベル・ノードの下にある部屋ノードは参照ノード (ref node) , meaning it links or refers to a corresponding room- container/room node. Ref nodes are used in order to avoid duplicating information several places in the xml file. The link between the two room nodes is that the value of the @ref attribute equals the value of the @id attribute.
When traversing the level node and we find the room ref node, we need a way to retrieve the corresponding room node since it contains all the room data. The way to do this is by creating an index. This is done by manually inserting the following xpath expression into Review->Global XSLT window.に過ぎず、
対応する部屋コンテナ/部屋ノードをリンクまたは参照することを意味します。参照ノードが使用されるのは、xml ファイル内の複数の場所で情報が重複するのを避けるためです。
2つの部屋ノードの間のリンクは、@ref属性の値が@id属性の値と等しいことです。
レベル・ノードをトラバースして部屋参照ノードを見つけた場合、対応する部屋ノードにはすべての部屋デー タが含まれるため、部屋ノードを取得する方法が必要です。
これを行うには、インデックスを作成します。これは、以下のxpath式をReview->Global XSLTウィンドウに手動で挿入することで行います。
<xsl:match key="room-index" match="room" use="@id"/> |
---|
It creates an index called "room-index " containing all the room nodes in the xml file that contains a @id attribute. It is possible to create several indexes in the same document. They just need a unique name.
In our report I want to insert a repeating table showing the room name for all the rooms underneath the levels. Then I insert a field with the following xpath expression:と言うインデックスが作成され、xmlファイル内の@id属性を含む全ての部屋ノードが含まれます。
同じドキュメントに複数のインデックスを作成することも可能です。一意な名前が必要です。
レポートに、レベルの下にあるすべての部屋の部屋名を示す繰り返しテーブルを挿入したいと思います。そして、以下のxpath式でフィールドを挿入します:
key('room-index', @ref)/core/@name |
---|
I am in the context of a ref属性を持つ部屋参照ノード (room ref node which has a @ref attribute. Using the @ref value I retrieve the room node with a matching @id value from the index called )のコンテキストにいます。この @ref 値を使用して、"room-index" . The xpath expression keyというインデックスから一致する @id 値を持つ部屋ノードを取得します。
xpath式のkey('room-index', @ref) returns the room node and it contains a core node with a @name attribute. は、部屋ノードを返し、それは@name属性を持つコア・ノードを含んでいます。
Important: The xsl in a building block might require one or more indexes to be defined. This can either be done in the Review->Global XSLT Window for the building block or in the main report using the building block.重要:ビルディング・ブロックの xsl では、1 つ以上のインデックスを定義する必要がある場合があります。
これは、ビルディング・ブロックのレビュー (Review-)→グローバルXSLTウィンドウ (Global XSLT Window )で行うか、ビルディング・ブロックを使用するメイン・レポートで行います。