文档分析和内容类型
上次修改时间: 2010年11月1日
适用范围: SharePoint Foundation 2010
当 Microsoft SharePoint Foundation 调用文档分析程序来提升文档属性时,分析程序将所有文档属性都写入 IParserPropertyBag 接口的实例。SharePoint Foundation 然后确定属性包中的哪些属性与文档库中的列相匹配。如果属性包指示文档具有分配的内容类型并且该内容类型受文档库支持,SharePoint Foundation 会提升与内容类型中包括的列相匹配的文档属性。
有关详细信息,请参阅文档属性升级和降级。
分析文档中的内容类型
使用文档分析程序界面,文档分析程序可以访问分配给文档的内容类型,并将内容类型存储在文档本身中。此外,文档分析程序可以更新存储在文档中的内容类型定义,以便它与列表或文档库使用的内容类型定义的版本相匹配。
当 SharePoint Foundation 调用分析程序来分析文档时,如果分析程序将此文档的内容类型作为文档属性写入属性包对象中,则 SharePoint Foundation 会将文档中的内容类型 ID 与要将此文档上载到的文档库的关联内容类型 ID 进行比较。如果此文档的内容类型已与文档库相关联,则 SharePoint Foundation 会提升相应的文档属性并保存此文档。SharePoint Foundation 还会更新属性包对象中的内容类型架构并要求分析程序更新文档中嵌入的任何内容类型架构。
但是,在某些情况下,文档的内容类型可能实际上不与用户要将文档上载到的文档库关联。例如,用户可能从包含内容类型的文档模板创建文档;或者,用户可能将文档从一个文档库移到另一个文档库。
如果文档的内容类型与文档库无关联,则 SharePoint Foundation 采取以下操作:
如果文档包含内容类型的文档属性,但该文档属性为空,则 SharePoint Foundation 调用分析器来将文档库的默认列表内容类型降级为文档。SharePoint Foundation 然后提升与默认列表内容类型中的列匹配的文档属性并存储文档。
如果尚未为文档分配内容类型,则会发生此情况。
如果分配给文档的内容类型与文档库无关联,则 SharePoint Foundation 确定文档库是否允许任何内容类型。如果允许,则 SharePoint Foundation 将保持文档的内容类型不变。SharePoint Foundation 不提升文档内容类型;但是,它却提升与文档库列匹配的任何文档属性。
您可以将列表设置为允许任何内容类型。为此,将未知文档类型内容类型添加到列表中,然后可以将任何内容类型的文档上载到列表中,而无需覆盖其内容类型。这样,用户就可以将文档移入列表中,而不会丢失文档的元数据,而如果覆盖内容类型,则会丢失文档的元数据。
如果分配给文档的内容类型与文档库无关联,并且文档库不允许任何内容类型,则 SharePoint Foundation 会调用分析器来将文档库的默认列表内容类型降级为文档。SharePoint Foundation 然后提升与默认列表内容类型中的列匹配的文档属性并存储文档。
下图详细说明了当分析器分析文档时,如果分析器将文档的内容类型作为文档属性包括在返回给 SharePoint Foundation 的属性包中时,SharePoint Foundation 将采取的操作。
SharePoint Foundation 决不会将文档的内容类型提升到文档库。