XML レポート データを指定するための要素パス構文
更新 : 2006 年 7 月 17 日
レポート デザイナでは、大文字と小文字が区別される要素パスを定義して、レポートに使用するデータを XML データ ソースから指定します。要素パスとは、XML データ ソースにおける XML 階層のノードとその属性の走査方法を指定するものです。データセット クエリを空にするか、XML Query の XML ElementPath を空にした場合、既定の要素パスが使用されます。XML データ ソースからデータが取得されると、テキスト値を持つ要素ノードおよび要素ノードの属性が、結果セットにおける列になります。クエリを実行すると、これらのノードと属性の値が、行データになります。ツール バーの [フィールドの更新] ボタンをクリックすると、列がデータセットのフィールドにマップされ、[データセット] ウィンドウに表示されます。このトピックでは、要素パス構文について説明します。
メモ : |
---|
要素パス構文は、名前空間に依存しません。要素パスで名前空間を使用するには、XML ElementPath 要素 (「XML レポート データを指定するための XML クエリ構文」を参照) を含む XML クエリ構文を使用します。 |
次の表に、要素パスを定義する際の表記規則を示します。
表記規則 | 使用対象 |
---|---|
太字 |
記載されているとおりに入力する必要があるテキストを示します。 |
| (縦棒) |
構文項目に複数の選択肢があることを示します。選択できる項目は 1 つだけです。 |
[ ] (角かっこ) |
省略可能な構文項目を示します。角かっこは入力しません。 |
{} (中かっこ) |
構文項目のパラメータを区切ります。 |
[,...n] |
先行する項目を n 回繰り返せることを示します。項目はコンマで区切ります。 |
構文
Element path ::=
ElementNode[/Element path]
ElementNode ::=
XMLName[(Encoding)][{[FieldList]}]
XMLName ::=
[NamespacePrefix:]XMLLocalName
Encoding ::=
HTMLEncoded | Base64Encoded
FieldList ::=
Field[,FieldList]
Field ::=
Attribute | Value | Element | ElementNode
Attribute ::=
@XMLName[(Type)]
Value ::=
@[(Type)]
Element ::=
XMLName[(Type)]
Type ::=
String | Integer | Boolean | Float | Decimal | Date | XML
NamespacePrefix ::=
Identifier that specifies the namespace.
XMLLocalName :: =
Identifier in the XML tag.
解説
次の表は、要素パス関連の用語をまとめたものです。サンプル XML ドキュメントである Customers.xml (このトピックの「例」を参照) を使って説明しています。
メモ : |
---|
XML タグでは大文字と小文字が区別されます。要素パスに ElementNode を指定する場合は、データ ソース内の XML タグと完全に一致させる必要があります。 |
用語 | 定義 |
---|---|
Element path |
XML ドキュメント内のノードのシーケンス、つまり、どのようにノードをたどっていけば、XML データ ソースからデータセットのフィールド データを取得できるかを定義します。 |
ElementNode |
XML ドキュメント内の XML ノードです。各ノードは他のノードと階層的な関係にあり、タグによって指定されます。たとえば、<Customers> は、ルート要素ノードです。<Customer> は、<Customers> のサブ要素です。 |
XMLName |
ノードの名前です。たとえば、Customers ノードの名前は Customers です。すべてのノード名を一意に識別できるように、XMLName の先頭には名前空間識別子を付けることができます。 |
Encoding |
この要素の Value はエンコードされた XML であり、この要素のサブ要素としてデコードおよび追加する必要があることを示します。 |
FieldList |
データの取得に使用する一連の要素と属性を定義します。 指定しなかった場合は、すべての属性およびサブ要素がフィールドとして使用されます。空のフィールド リスト ({}) を指定した場合、このノードのフィールドは使用されません。 FieldList には、Value や Element、ElementNode は含まれません。 |
Field |
データセットのフィールドとして取得するデータを指定します。 |
Attribute |
ElementNode 内に指定される名前と値のペアです。たとえば、要素ノード <Customer ID="1"> において、ID は属性です。@ID(Integer) は、対応するデータ フィールド (ID) に整数型の "1" を返します。 |
Value |
要素の値です。Value は、要素パス内で最後の ElementNode でのみ使用できます。たとえば、<Return> はリーフ ノードであるため、これを要素パスの最後に追加した場合、Return {@} の値は Chair になります。 |
Element |
指定されたサブ要素の値です。たとえば、Customers {}/Customer {}/LastName とすると、LastName 要素についてのみ値が取得されます。 |
Type |
この要素から作成されたフィールドに使用するデータ型 (省略可) です。 |
NamespacePrefix |
NamespacePrefix は XML Query 要素で定義されます。XML Query 要素が存在しない場合、XML ElementPath の名前空間は無視されます。XML Query 要素が存在する場合は、XML ElementPath に属性 IgnoreNamespaces を使用できます (省略可)。IgnoreNamespaces が true の場合、XML ElementPath および XML ドキュメントの名前空間は無視されます。詳細については、「XML レポート データを指定するための XML クエリ構文」を参照してください。 |
例 - 名前空間なし
データ ソースとして、XML ドキュメント (Customers.xml) を使用した例を次に示します。要素パスの構文を示しながら、データセットを定義するクエリでその要素パスを使用した場合にどのような結果が得られるかを説明しています。
メモ : |
---|
要素パスが空の場合、クエリには、既定の要素パス (リーフ ノード コレクションの最初のパス) が使用されます。1 つ目は要素パスを空にする例です。/Customers/Customer/Orders/Order という要素パスを指定した場合と同じ結果になります。このパス上に存在するすべてのノードの値と属性が結果セットに返され、ノード名と属性名がデータセットのフィールドとして表示されます。 |
例
データセットのフィールド
空
Order
Qty
ID
FirstName
LastName
Customer.ID
xmlns
Chair61BobbyMoore11https://www.adventure-works.com
Table12BobbyMoore11https://www.adventure-works.com
Sofa28CrystalHu20https://www.adventure-works.com
EndTables215WyattDiaz33https://www.adventure-works.com
Customers {}/Customer
FirstName
LastName
ID
BobbyMoore11
CrystalHu20
WyattDiaz33
Customers {}/Customer {}/LastName
LastName
Moore
Hu
Diaz
Customers {}/Customer {}/Orders/Order {@,@Qty}
Order
Qty
Chair6
Table1
Sofa2
EndTables2
Customers {}/Customer/Orders/Order{ @ID(Integer)}
Order.ID
FirstName
LastName
ID
1BobbyMoore11
2BobbyMoore11
8CrystalHu20
15WyattDiaz33
XML ドキュメント : Customers.xml
前のセクションの要素パスの例を実際に試すには、この XML をコピーしてレポート デザイナからアクセス可能な URL に保存し、次に、XML ドキュメントを XML データ ソースとして使用します (例 : https://localhost/Customers.xml)。接続文字列のない XML データ ソースを作成し、Customers.XML を XML Query 要素の <XmlData> タグに埋め込むこともできます。
<?xml version="1.0"?>
<Customers xmlns="https://www.adventure-works.com">
<Customer ID="11">
<FirstName>Bobby</FirstName>
<LastName>Moore</LastName>
<Orders>
<Order ID="1" Qty="6">Chair</Order>
<Order ID="2" Qty="1">Table</Order>
</Orders>
<Returns>
<Return ID="1" Qty="2">Chair</Return>
</Returns>
</Customer>
<Customer ID="20">
<FirstName>Crystal</FirstName>
<LastName>Hu</LastName>
<Orders>
<Order ID="8" Qty="2">Sofa</Order>
</Orders>
<Returns/>
</Customer>
<Customer ID="33">
<FirstName>Wyatt</FirstName>
<LastName>Diaz</LastName>
<Orders>
<Order ID="15" Qty="2">EndTables</Order>
</Orders>
<Returns/>
</Customer>
</Customers>
参照
処理手順
[データセット] ウィンドウのフィールドを更新する方法 (レポート デザイナ)