次の方法で共有


XML レポート データを指定するための要素パス構文

更新 : 2006 年 7 月 17 日

レポート デザイナでは、大文字と小文字が区別される要素パスを定義して、レポートに使用するデータを XML データ ソースから指定します。要素パスとは、XML データ ソースにおける XML 階層のノードとその属性の走査方法を指定するものです。データセット クエリを空にするか、XML Query の XML ElementPath を空にした場合、既定の要素パスが使用されます。XML データ ソースからデータが取得されると、テキスト値を持つ要素ノードおよび要素ノードの属性が、結果セットにおける列になります。クエリを実行すると、これらのノードと属性の値が、行データになります。ツール バーの [フィールドの更新] ボタンをクリックすると、列がデータセットのフィールドにマップされ、[データセット] ウィンドウに表示されます。このトピックでは、要素パス構文について説明します。

ms365158.note(ja-jp,SQL.90).gifメモ :
要素パス構文は、名前空間に依存しません。要素パスで名前空間を使用するには、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 (このトピックの「例」を参照) を使って説明しています。

ms365158.note(ja-jp,SQL.90).gifメモ :
XML タグでは大文字と小文字が区別されます。要素パスに ElementNode を指定する場合は、データ ソース内の XML タグと完全に一致させる必要があります。
用語 定義

Element path

XML ドキュメント内のノードのシーケンス、つまり、どのようにノードをたどっていけば、XML データ ソースからデータセットのフィールド データを取得できるかを定義します。

ElementNode

XML ドキュメント内の XML ノードです。各ノードは他のノードと階層的な関係にあり、タグによって指定されます。たとえば、<Customers> は、ルート要素ノードです。<Customer> は、<Customers> のサブ要素です。

XMLName

ノードの名前です。たとえば、Customers ノードの名前は Customers です。すべてのノード名を一意に識別できるように、XMLName の先頭には名前空間識別子を付けることができます。

Encoding

この要素の Value はエンコードされた XML であり、この要素のサブ要素としてデコードおよび追加する必要があることを示します。

FieldList

データの取得に使用する一連の要素と属性を定義します。

指定しなかった場合は、すべての属性およびサブ要素がフィールドとして使用されます。空のフィールド リスト ({}) を指定した場合、このノードのフィールドは使用されません。

FieldList には、ValueElementElementNode は含まれません。

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 を使用できます (省略可)。IgnoreNamespacestrue の場合、XML ElementPath および XML ドキュメントの名前空間は無視されます。詳細については、「XML レポート データを指定するための XML クエリ構文」を参照してください。

例 - 名前空間なし

データ ソースとして、XML ドキュメント (Customers.xml) を使用した例を次に示します。要素パスの構文を示しながら、データセットを定義するクエリでその要素パスを使用した場合にどのような結果が得られるかを説明しています。

ms365158.note(ja-jp,SQL.90).gifメモ :
要素パスが空の場合、クエリには、既定の要素パス (リーフ ノード コレクションの最初のパス) が使用されます。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>

参照

処理手順

[データセット] ウィンドウのフィールドを更新する方法 (レポート デザイナ)

その他の技術情報

チュートリアル : レポートでの XML データの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手