XsltListViewWebPart とカスタム リスト ビュー

最終更新日: 2015年3月9日

適用対象: SharePoint Foundation 2010

Microsoft SharePoint Foundation 2010 の新しい XsltListViewWebPart クラスは、XSL ベースの DataFormWebPart クラスから派生したものです。これはリスト ビューで既定のビューの種類として ListViewWebPart クラスを置き換えますが、同じビュー設定については同等の HTML を生成します。同様に、XsltListFormWebPart クラスは、リスト アイテム フォームの既定のビューの種類として ListFormWebPart クラスを置き換えます。ListViewWebPart クラスと異なり、XsltListViewWebPart クラスは HTML レンダリングを定義するために、CAML (Collaborative Application Markup Language)ビュー スキーマの HTML レンダリング要素を使用する代わりに、XSLT 変換を使用します。XsltListViewWebPart クラスにより適用された XSLT ファイルは、各フロントエンド Web サーバーにキャッシュされ、XSLT ファイルごとに 1 つの言語のみをサポートするのではなく、すべての言語をサポートします。各 XSLT ファイルがサーバーでコンパイルされ、わずかなサーバーのリソースしか使用しないため、SharePoint Foundation で優れたスケーラビリティが得られます。さらに、XsltListViewWebPart クラスは、CAML で使用される IFrame アプローチの代わりに、ASP.NET AJAX を使用するアドホック フィルター処理を実行します。XsltListViewWebPart クラスにより適用される XSLT 変換の結果は XHTML となります。リスト ビューとアイテム フォームのどちらであっても、XsltListViewWebPart クラスと XSLT テンプレートは、1 つのユーザー設定可能なビュー テクノロジに集約させながら、SharePoint Foundation ビューで、ASP.NET AJAX、XHTML、および外部データの要件を満たす最良の方法を実現します。

ブラウザーの SharePoint Foundation ユーザー インターフェイス、Microsoft SharePoint Designer 2010、あるいは Microsoft Visual Studio 2010 でビューをカスタマイズすることができます。カスタム リスト ビューを定義するために XsltListViewWebPart クラスでカスタム XSLT を実装することができます。カスタム XSLT は、既定の XSLT ファイルで、特定のテンプレートをオーバーライドするか、あるいはそれらを完全に置換することができます。カスタム XSLT ファイルは、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES フォルダー、あるいは %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS フォルダーのどちらかに展開することができます。ビュー定義の XslLink 要素によって、リスト定義について Schema.xml ファイルの <Views> セクションで、XSLT ベースのリスト ビューを指定することができます。SharePoint Foundation が XSLT テンプレートを使用する方法、そしてインストールされる既定の XSLT ファイルの情報については、「XSLT リスト ビュー レンダリング システムの概要」を参照してください。

XsltListViewWebPart は、Web パーツの XmlDefinition プロパティの Query 要素で定義されるクエリを実行することで取得される XML データからリストの HTML ビューを生成します。XmlDefinition プロパティには、クエリに加えて、どの基礎となるビュー スタイル (たとえば、Basic Table または Boxed) を使用するか、ビューでどのフィールドを表示するか、1 つのページで表示するデータ列の数、リストの Schema.xml ファイルで指定されているその他の設定など、さまざまなビュー属性の詳細が含まれます。Schema.xml ファイルのリスト定義は XmlDefinition プロパティに含まれる結果ツリーを作成するスキーマを解析する XSLT プロセッサのソース ノード ツリーとして機能します。

XmlDefinition プロパティの構文は、ListViewWebPart クラスの SharePoint FoundationListViewXml プロパティに基づいています。XsltListViewWebPart クラスは、SPDataSource コントロールを作成してデータを XML として取得するために、XmlDefinition プロパティのクエリ詳細を使用します。次に、Web パーツは、リスト スキーマと XmlDefinition ビュー詳細を含むパラメーターを使用して、XML データに XSLT 変換を実行します。XSLT は、スキーマ非依存です。これは参照されたリストのスキーマに適応することを意味します。フィールドに対して追加、削除、あるいは種類を変更できますが、そうしても XSLT は適切にビューを表示できます。XSLT は、ビュー形式用のような、XmlDefinition プロパティに指定されているビュー設定を適応します。XSLT は、<xsl:apply-templates> を使用して、ビュー スタイルとリスト スキーマで定義された方法に基づいて、データの各列と各ビュー フィールドを反復します。対応する XSLT テンプレートは、ブラウザーに送信する HTML 出力を生成します。XML データを表示するために、XSLT リスト ビューで dsQueryResponse XML を使用する方法の詳細については「XSLT 変換での入力と結果ノード ツリーの例」を参照してください。

ブラウザーでビューを変更するために SharePoint Foundation ユーザー インターフェイスを使用すると、その Web パーツ領域内で Web パーツの XmlDefinition プロパティの宣言型の設定が変更されます。この結果、Web パーツは SharePoint FoundationListViewWebPart クラスと同等の HTML を生成します。変換手順を必要とせず、ブラウザーでその他の変更を行うことができる SharePoint Designer を使用することで、さらに Web パーツをカスタマイズすることができます。Web パーツの XSLT は変更されず、フロントエンド Web サーバーの読み取り専用場所にキャッシュされ、すべての XsltListViewWebPart コントロールにより再利用されます。SharePoint Designer に行う変更は、キャッシュされた XSLT をオーバーライドして、Web パーツの Xsl プロパティに書き込まれます。SharePoint Foundation は、XSLT のインポート優先順位ルールとテンプレート一致動作を利用して、指定されたテンプレートのみをオーバーライドします。これにより、フロントエンド XSLT ファイルに影響を与えたり、Web パーツに変更をコピーしたりすることなしに、生成された HTML に、きめ細かい変更を行うことができます。オーバーライドされたテンプレートだけが Web パーツの Xsl プロパティに保存されます。

XsltListViewWebPart の派生

XsltListViewWebPart クラスは、以下の階層構造に基づいて DataFormWebPart クラスから継承します。

Object

  Control

    WebControl

      Panel

        Part

          WebPart

            WebPart

              BaseXsltDataWebPart

                DataFormWebPart

                  BaseXsltListWebPart

                    XsltListViewWebPart

継承されるプロパティ

XsltListViewWebPart クラスは、DataFormWebPart クラスから、以下の表に示されるメンバーを含め、多くのメンバーを継承します。表は、各プロパティの XML 同等物が、要素あるいは属性として持続的であるかどうかを示します。

プロパティ名

XML 持続性

説明

DataSources

要素

オプション。IDataSource インターフェイスを表す DataSourceCollection オブジェクトを指定します。通常は、ビューが表示されるとき、データ ソース コントロール (SPDataSource) を作成するために、代わりに XmlDefinition プロパティが使用されます。このプロパティが XsltListViewWebPart に存在する場合は、例外がスローされます。

ListDisplayName

属性

Announcements のような、ローカライズされた表示名を使用するリスト参照が含まれます。

ListName

属性

同等の ListViewWebPart 属性と同じ構文で {GUID} の形式でのリスト参照が含まれます。

ListUrl

属性

Lists/Announcements のような、Web サイトに対して相対的な URL 形式でのリスト参照が含まれます。

XmlDefinition

要素

SharePoint FoundationListViewWebPart クラスでサポートされたものと同じ構文から CAML レンダリング タグを取り除いた構文で、有効な View 要素が含まれます (「XMLDefinition および CAML ビュー スキーマ」を参照)。

XmlDefinitionLink

属性

XmlDefinition プロパティの内容を定義する XML ファイルへの URL 参照を指定します。

Xsl

要素

オプション。インライン スタイル シートが含まれます。

XslLink

要素

オプション。変換で使用する XSLT ファイルを指定する URL が含まれます。

List* プロパティ (ListNameListUrl、あるいは ListDisplayName) の 1 つが存在する必要があり、さらに有効なリストへの参照を指定する必要があります。複数のプロパティが存在する場合、評価は ListName、ListUrl、ListDisplayName の順に行われます。

XmlDefinition* プロパティ (XmlDefinition あるいは XmlDefinitionLink) のどちらかが存在する場合は、有効な View 要素である必要があります。それ以外の場合は、代わりにリストの既定のビューから (つまり Schema.xml から) のビュー定義が使用されます。複数のプロパティが存在する場合は、評価は XmlDefinitionLink、XmlDefinition の順に行われます。

DataFormWebPart クラスの Xsl プロパティと XslLink プロパティと同様に、評価の順番は最初に XslLink、次に XSL となります。XSL と XslLink のいずれも指定されていない場合は、ViewSchema.xml 要素で参照されている XSLT ファイルが変換で使用されます。XSL あるいは XslLink プロパティがあるということは、既定のキャッシュ済みでユーザー設定されていない XSLT をオーバーライドするように SharePoint Designer でビューがユーザー設定されたことを示します。(クエリの修正ではなく) 明示的な書式設定操作が行われた場合、XSL プロパティは、SharePoint Foundation ユーザー インターフェイスから変更されることはなく、SharePoint Designer からのみ変更されます。たとえば、SharePoint Designer での条件付き書式設定では、XSL の内容を更新する必要がありますが、列の追加あるいは削除では更新の必要はありません。

XsltListViewWebPart クラスの GetDataSource() メソッドは、DataFormWebPart クラスの GetDataSource() メソッドをオーバーライドします。XsltListViewWebPart クラスは、まず、リスト参照を解決して、次に XmlDefinition プロパティの内容に基づくデータ ソース コントロール (SPDataSource) を作成します。

関連項目

概念

XSLT リスト ビュー レンダリング システムの概要

XSLT 変換での入力と結果ノード ツリーの例

XMLDefinition および CAML ビュー スキーマ

[方法] リスト ビューでのフィールドのレンダリングをカスタマイズする

[方法] カスタム リスト ビューでリソースを実装する