ドキュメント パーサーの処理
ファイルをドキュメント ライブラリにアップロード、移動、またはコピーする場合、Windows SharePoint Services は、ドキュメントのファイルの種類にパーサーが関連付けられているかどうかを確認します。パーサーが関連付けられている場合、Windows SharePoint Services はパーサーを呼び出して、解析するドキュメントとプロパティ バッグ オブジェクトをパーサーに渡します。パーサーはドキュメントからすべてのプロパティと対応するプロパティ値を抽出し、プロパティ バッグ オブジェクトに追加します。
Windows SharePoint Services はドキュメントのプロパティ バッグにアクセスし、ドキュメントの列に一致するプロパティを特定します。次に、これらのプロパティを昇格、つまりドキュメントのプロパティ値を一致するドキュメント ライブラリの列に書き込みます。Windows SharePoint Services は、ドキュメントに適用される列に一致するプロパティのみを昇格します。ドキュメントに適用される列は、次によって指定されます。
ドキュメントのコンテンツ タイプ (割り当てられている場合)。
ドキュメントにコンテンツ タイプがない場合は、ドキュメント ライブラリ内の列。
コンテンツ タイプの詳細については、「コンテンツ タイプ」を参照してください。
また、Windows SharePoint Services はドキュメント プロパティ コレクション全体をハッシュ テーブルに格納します。このハッシュ テーブルは、SPFile.Properties プロパティを使用してプログラムによってアクセスできます。ユーザー インターフェイスを通じてドキュメント プロパティのハッシュ テーブルにアクセスすることはできません。
次の図は、ドキュメントの解析処理を示しています。この処理で、パーサーはドキュメントからドキュメントのプロパティを抽出し、そのプロパティをプロパティ バッグに書き込みます。4 つのドキュメント プロパティのうち、3 つはドキュメントのコンテンツ タイプに含まれています。Windows SharePoint Services はこれらのプロパティをドキュメント ライブラリに昇格します。つまり、これらのプロパティ値を適切な列に書き込みます。ドキュメントのコンテンツ タイプに Status 列は含まれていないので、Windows SharePoint Services は、ドキュメント ライブラリに一致する列がある場合でも、4 番目のドキュメント プロパティ Status を昇格しません。また、Windows SharePoint Services は、4 つのプロパティすべてを、ドキュメントと共にドキュメント ライブラリに格納されるハッシュ テーブルに書き込みます。
Windows SharePoint Services はパーサーを呼び出して、プロパティを降格する、つまり列の値をドキュメント自体の一致するプロパティに書き込むこともできます。Windows SharePoint Services は、パーサーの降格機能を呼び出す場合も、パーサーにドキュメントとプロパティ バッグ オブジェクトを渡します。この場合、プロパティ バッグ オブジェクトには、Windows SharePoint Services でパーサーがドキュメントに降格すると予測されるプロパティが含まれます。パーサーは指定されたプロパティを降格し、Windows SharePoint Services は更新されたドキュメントをドキュメント ライブラリに保存します。
次の図は、ドキュメント プロパティの降格処理を示しています。ドキュメントの 2 つのプロパティを更新するために、Windows SharePoint Services はパーサーを呼び出して、パーサーに更新するドキュメントおよび 2 つのドキュメント プロパティを含むプロパティ バッグ オブジェクトを渡します。パーサーはプロパティ バッグからプロパティ値を読み取り、ドキュメント内のプロパティを更新します。パーサーはドキュメントの更新を終了すると、ドキュメントを変更したことを示すパラメータを Windows SharePoint Services に渡します。次に、Windows SharePoint Services は更新されたドキュメントをドキュメント ライブラリに保存します。