Share via


コンテンツ タイプを使用して XML ドキュメントのプロパティを指定する

Windows SharePoint Services が組み込みの XML パーサーを呼びだして XML ファイルを解析するとき、パーサーは、ドキュメントのコンテンツ タイプを使用して、ドキュメントのプロパティとコンテンツ タイプの列の対応、およびドキュメント プロパティが格納されるドキュメント内の場所を判別します。したがって、XML ファイルに対し Windows SharePoint Services が組み込みの XML パーサーを使うようにするには、以下を行う必要があります。

  • 必要な解析情報を含むコンテンツ タイプを作成します。ランクを上げたり下げたりするドキュメント プロパティごとに、フィールド定義が表す列にマップするドキュメント プロパティの名前、およびドキュメント プロパティが格納されるドキュメント内の場所を含む、フィールド定義を含めます。

  • コンテンツ タイプ ID が、ドキュメントにランクを下げられるドキュメント プロパティであることを確認します。これにより、組み込み XML パーサーがドキュメントに対する正しいコンテンツ タイプを識別してそれにアクセスできることが保証されます。詳細については、「XML パーサーのドキュメント コンテンツ タイプを指定する」を参照してください。

XML 解析のためのコンテンツ タイプ情報

ドキュメントのプロパティは、ドキュメントが格納されるドキュメント ライブラリで列の昇格および降格がなされます。ドキュメントがコンテンツ タイプに割り当てられている場合、これらの列はコンテンツ タイプ定義で指定されます。コンテンツ タイプ定義の XML では、コンテンツ タイプに格納される各列は FieldRef 要素によって表されます。

注意

Field 要素は、サイトまたはリストに対して定義される列を表します。FieldRef 要素は、コンテンツ タイプに格納される列に対する参照を表します。FieldRef 要素には列の属性が含まれ、この属性は、列の表示名や、そのコンテンツ タイプで非表示か、または必須かなど、その特定のコンテンツ タイプで列が使用されるときに無効にできます。この情報には、コンテンツ タイプでこの列が使用されるときに列にマップするドキュメント プロパティの場所も含まれます。これにより、異なるコンテンツ タイプの列に対し、異なる場所にあるドキュメント プロパティをマップするよう指定できます。

このため、ドキュメント プロパティの昇格および降格するために組み込み XML パーサーが必要とする情報を指定するには、ドキュメント プロパティの対応する列を表す FieldRef 要素を、コンテンツ タイプ定義で変更する必要があります。

次の図は、XML ファイルがドキュメント ライブラリにチェックインされるときにパーサーが実行する操作を示しています。Windows SharePoint Services がパーサーを呼び出すと、パーサーは、コンテンツ タイプ ID 列を調べて、コンテンツ タイプ ID が格納されているドキュメント内の場所を判別します。その後、パーサーは、ドキュメント内のその場所でコンテンツ タイプを取得します。パーサーは、コンテンツ タイプを調べて、ドキュメント プロパティ情報が格納されている FieldRef 要素を判別します。ドキュメント プロパティにマップされる FieldRef 要素ごとに、パーサーは、一致する FieldRef 要素で指定されているドキュメント内の場所で、ドキュメント プロパティを探します。パーサーは、指定されている場所でドキュメント プロパティを発見すると、その値を対応する列に昇格します。

XML ドキュメントが最初にドキュメント ライブラリにアップロードされるとき、組み込み XML パーサーは、ドキュメントのコンテンツ タイプ、およびそのコンテンツ タイプがドキュメント ライブラリと関連付けられているかどうかを判別する必要があります。詳細については、「XML パーサーのドキュメント コンテンツ タイプを指定する」を参照してください。

XML プロパティの昇格

Field 要素または FieldRef 要素のいくつかの属性を変更し、その要素をドキュメント プロパティにマップさせたり、ドキュメント内でのプロパティの位置を指定したりできます。

最初に、Field 要素または FieldRef 要素は、ドキュメント ライブラリ内の列の ID を指定する ID 属性を含んでいる必要があります。以下に例を示します。

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="EmployeeID”/>

次に、ドキュメント内のドキュメント プロパティの場所を指定する追加属性を、Field 要素または FieldRef 要素に追加する必要があります。ドキュメント プロパティは、次の場所に格納できます。

  • ドキュメントの XML コンテンツ

  • ドキュメントの処理命令

プロパティの場所を指定するために Field 要素または FieldRef 要素に追加する属性は、プロパティが XML コンテンツと処理命令のどちらに格納されているかにより異なります。これらの属性は相互に排他的です。つまり、XML コンテンツ内の場所を指定する属性を追加する場合は、処理命令内の場所を指定する属性を追加することはできません。

列のフィールド定義スキーマをプログラムで変更するには、SPField.SchemaXML オブジェクトを使用します。

ドキュメントの XML コンテンツ内のプロパティを指定する

ドキュメント プロパティを XML コンテンツとしてドキュメント内に格納する場合は、ドキュメント内のプロパティの場所を表す XPath 式を指定します。Node 属性を Field 要素または FieldRef 要素に追加し、それに XPath 式を設定します。以下に例を示します。

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="EmployeeID"

node="/my:myFields/my:employee"/>

ドキュメント プロパティ値コレクション

値のコレクションを返す XPath 式を指定する場合は、Field 要素または FieldRef 要素に集約属性を含めることもできます。集約属性は、返される値セットに対して実行する操作を指定します。このアクションには、集計関数またはコレクション内の特定の要素の指示を指定できます。

以下のいずれかの値を使用できます。

  • sum

  • count

  • average

  • min

  • max

  • merge

  • plaintext   ノード テキストのコンテンツを書式なしテキストに変換します。

  • first   コレクション内の最初の要素にプロパティの昇格および降格を適用します。

  • last   コレクション内の最後の要素にプロパティの昇格および降格を適用します。

以下に例を示します。

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="TotalToExpense”

node="/my:myFields/my:expense"

aggregation="sum"/>

ドキュメントの処理命令でプロパティを指定する

処理命令は単なる XML 以外のデータを格納できるので、処理命令に格納されているドキュメント プロパティを示すのに、XPath 式では不十分です。代わりに、ドキュメント プロパティとして使用する処理命令および処理命令属性を指定する属性のペアを、Field 要素または FieldRef 要素に追加する必要があります。

  • ドキュメント内でドキュメント プロパティが格納されている処理命令を指定するには、PITarget 属性を追加します。

  • ドキュメント プロパティとして使用する属性を指定するには、PIAttribute 属性を追加します。

以下に例を示します。

<FieldRef

ID="{4B1BF6C6-4F39-45ac-ACD5-16FE7A214E5E}"

Name="columnName"

PITarget="mydocumenttype"

PIAttribute="propertyAttribute"/>

これらの属性は、パーサーに対し、ドキュメント プロパティの値に対して次の処理命令と属性を調べるように指示します。

<?mydocumenttype propertyAttribute="value"?>

別の属性ペア PrimaryPITarget と PrimaryPIAttribute を追加することもできます。この属性ペアはオプションです。PITarget と PIAttribute と同じように、これらの属性も連携してドキュメント プロパティの場所を示します。ただし、これらの属性が指定されていると、組み込み XML パーサーは、最初にこれらの属性が指定する場所でドキュメント プロパティを探します。その場所に値がある場合、パーサーはそれを使用し、PITarget 属性と PIAttribute 属性は無視します。PITarget 属性と PIAttribute 属性によって指定されている場所でドキュメント プロパティを探すのは、PrimaryPITarget 属性と PrimaryPIAttribute 属性によって指定されている場所が NULL 値を返す場合だけです。

PrimaryPITarget 属性と PrimaryPIAttribute 属性を指定する場合は、PITarget 属性と PIAttribute 属性も指定する必要があります。パーサーが PrimaryPITarget 属性と PrimaryPIAttribute 属性を使用するのは、PITarget と PIAttribute のペアによって指定されている処理命令属性がドキュメント内に存在しない場合、または属性が存在しても NULL または空の場合だけです。

See Also

概念

XML ドキュメント プロパティの昇格と降格

XML パーサーの処理

XML 解析のためにドキュメント コンテンツ タイプを判別する

XML パーサーのドキュメント コンテンツ タイプを指定する