2

SSRS (SQL Server 2008 R2) のレポートに問題があります。この問題は、入力がレポート ビルダー (v3) 内から提供されるか、SSRS の Web サービス インターフェイス経由で提供されるかに関係なく発生します。

これが入力 XML であるとしましょう (「ProvidedData」というパラメーター内):

<person>
<name>joe</name>
</person>

...そして、次のクエリでデータセットを作成します。

<Query><XmlData>" & Parameters!ProvidedData.Value & "</XmlData>
<ElementPath>person</ElementPath></Query>

次に、フィールド ソース「name」を使用して「Name」というフィールドを作成します。問題ありません - これは問題なくレポートで使用できます。

入力 XML を変更して名前空間情報を与えると、変更なしでも機能します。したがって、XML は次のようになります。

<person xmlns:p="http://somenamespace">
<name>joe</name>
</person>

これも機能します - 繰り返しますが、他に変更はありません。レポート ビルダーの既定値として、または Web サービス インターフェイス経由で C# から渡されたときに機能します。

問題は、XML にデフォルトの名前空間が与えられており、その XML を使用するとフィールド クエリが解決されないことです。エラーはありません。値が見つからないだけです。

したがって、XML が次のような場合は機能しません。

<person xmlns="http://somenamespace">
<name>joe</name>
</person>

何か案は?着信 XML を実際に制御することはできないため、デフォルトの名前空間に固執しています。

4

1 に答える 1

3

最初の 2 つの例では、person 要素は実際にはデフォルトの名前空間の一部です (2 番目の例では、接頭辞 (p) が「http://somenamespace」名前空間にバインドされていますが、接頭辞は person に割り当てられていないことに注意してください)。 (p:person のように))。

最後の例では、person 要素は実際には名前空間にバインドされているため、完全修飾要素は {http://somenamespace}person です。

適切なクエリ式では、次のように、名前空間が完全修飾要素を解決する必要があります。

<Query xmlns:p="http://somenamespace">
 ...
<ElementPath>/p:person</ElementPath>
</Query>

それが役立つことを願っています!

于 2012-07-20T04:43:33.397 に答える