フィールドとフィールド参照
最終更新日: 2010年7月21日
適用対象: SharePoint Foundation 2010
この記事の内容
列はフィールドまたはフィールド参照である
リストに列を追加する
コンテンツ タイプで列を参照する
ここでは、フィールドとフィールド参照の相違について説明します。
列はフィールドまたはフィールド参照である
サイトの定義、リストの定義、コンテンツ タイプの定義など、SharePoint Foundation のさまざまなスキーマでは、列を Field 要素または FieldRef 要素 (ContentType) 要素のどちらかで表します。
サイトの定義とリストの定義では、サイト内の列とリスト内の列を Field 要素で表します。ただし、コンテンツ タイプの定義では、サイト内の列の参照とリスト内の列の参照を FieldRef 要素で表します。同様に、オブジェクト モデルでは、サイトとリストに含まれるサイト内の列とリスト内の列を SPField オブジェクトで表し、コンテンツ タイプにおけるサイト内の列の参照とリスト内の列の参照は SPFieldLink オブジェクトで表します。
Field 要素には、サイト内またはリスト内の列 1 つの完全な定義が含まれます。
FieldRef 要素は、サイト レベルまたはリスト レベルで別に定義された列への参照です。フィールド参照では、以下のような列プロパティのサブセットを上書きすることができます。
表示名
XML の昇格属性と降格属性
フィールドがオプションか、必須か、または非表示か
フィールド参照でこれらのプロパティを変更すると、そのフィールド参照を含む特定のコンテンツ タイプに適用される際のプロパティだけが変更されます。
リストに列を追加する
サイト内の列は、テンプレートと見なすことができます。サイト レベルでサイト内の列を作成すると、作成した列を必要なリストや子サイトに適用できます。
サイト内の列の詳細については、「列について」を参照してください。
サイト内の列をリストに追加すると、列の定義がリストにリスト内の列としてローカルにコピーされます。したがって、リスト スキーマでは、リスト内の列がリスト スキーマの Field 要素で表さるようになります。オブジェクト モデルでは、SPField オブジェクトで表します。
また、サイト内の列をリストに追加した場合、結果として得られるリスト内の列は、サイト内の列と同じフィールド ID を持っています。SharePoint Foundation はこの ID を使用して、リスト内のどの列がサイト内の特定の列の "子" であるかを追跡します。これにより、サイト内の列に変更を加え、そのサイト内の列を親に持つリスト内の列すべてに、それらの変更を反映することができます。
詳細については、「サイト内の列を更新する」を参照してください。
列はリスト レベルでも作成できます。これらの列は作成したリストだけに適用されます。リスト内の列は、そのリストにあるコンテンツ タイプにのみ追加できます。また、リスト スキーマではリスト内の列を Field 要素で表し、オブジェクト モデルでは SPField オブジェクトで表します。これらは、別の列から派生したものでないため、他の列との親子関係を持ちません。
コンテンツ タイプで列を参照する
コンテンツ タイプで特定のアイテム メタデータを追跡するには、そのメタデータを表す列を参照します。ただし、コンテンツ タイプには列を作成できません。列を作成し、作成した列をコンテンツ タイプの定義で参照する必要があります。したがって、コンテンツ タイプに列を追加する場合、コンテンツ タイプのスキーマには Field 要素ではなく、FieldRef 要素が含まれます。このことは、コンテンツ タイプに追加するサイト内の列とリスト内の列の両方に当てはまります。
フィールド参照は、参照先の列と同じフィールド ID を保持します。
親コンテンツ タイプに基づいてコンテンツ タイプを作成する場合、既定では、親で参照されるすべての列は子コンテンツ タイプで FieldRef 要素として表されます。
コンテンツ タイプをリストに追加すると、そのコンテンツ タイプで参照される列が、リストにリスト内の列としてローカルにコピーされます。コンテンツ タイプのスキーマでさまざまな FieldRef 要素が参照する列は、Field 要素としてリスト スキーマにコピーされます。この要素も、サイト内の列との親子関係を持っています。
リスト コンテンツ タイプでリスト内の列を参照すると、リスト コンテンツ タイプのスキーマでは FieldRef 要素として追加されます。
したがって、サイト スキーマとリスト スキーマでは列を常に Field 要素で表しますが、コンテンツ タイプのスキーマでは常に FieldRef 要素で表します。
コンテンツ タイプにおけるフィールド参照は、Windows SharePoint Services 3.0 オブジェクト モデルでは SPFieldLink オブジェクトで表されます。
次の図はこの関係を示しています。コンテンツ タイプでサイト内の列 Author を参照するものと想定します。コンテンツ タイプのスキーマでは、列の参照を FieldRef 要素で表します。コンテンツ タイプをリストに追加すると、SharePoint Foundation は Author 列を Field 要素として追加します。両方の要素は、サイト内の列 Author と同じフィールド ID を持っています。リスト コンテンツ タイプでリスト内の列 ItemNo を参照すると、SharePoint Foundation は同じフィールド ID を持つ FieldRef 要素として追加します。