文档属性升级和降级
上次修改时间: 2010年11月1日
适用范围: SharePoint Foundation 2010
属性升级 是指从文档的属性中提取值,并将这些值写入列表或存储该文档的文档库中的相应列中的过程。属性降级 是同一过程的反向操作。从列表栏中读取值,然后写入文档属性。
Microsoft SharePoint Foundation 可与文档分析程序一起使用,以自动执行升级和降级属性的过程。当文档属性的值发生更改时,这些更改可自动写回列表。当列表项中的列或字段的值发生更改时,这些更改可自动写回与列表项相关联的文档。因此,文档及其关联的列表项仍保持同步。
当发生以下事件时,SharePoint Foundation 会启动属性升级或降级过程:
将文件上载到文档库。
修改与文件相关的列表项的字段。
将以编程方式更新 SPFile 对象的 Properties 属性。
列表架构发生更改后,首次下载文件。
在每种情况下,SharePoint Foundation 均会确定分析程序是否与文件类型相关联。如果关联,SharePoint Foundation 会调用该分析程序,并向其传递文档与属性包对象。然后分析程序会使用需要升级到列表的值填充该属性包,或从属性包中提取需要降级到文档的值。
SharePoint Foundation 只升级或降级与应用于文档的列表栏相匹配的文档属性。应用于文档的列由以下内容指定:
文档的内容类型(如果已指定)。
文档库中的列(如果文档不具有内容类型)。
有关内容类型的详细信息,请参阅内容类型。
SharePoint Foundation 还可将整个文档属性集合存储在哈希表中,可通过 SPFile 对象的 Properties 属性以编程方式访问该哈希表。无法通过用户界面访问文档属性哈希表。
有关内置 XML 分析程序如何升级和降级 XML 文件的文档属性的信息,请参阅 XML 文档属性升级和降级。
升级
SharePoint Foundation 可创建 IParserPropertyBag 接口 的实例,并使用列表中指定的任意文档属性填充该对象。然后,它会对文件类型调用文档分析程序,并调用该分析程序的 Parse,以便将文档和属性包作为参数传递。该方法返回后,SharePoint Foundation 会访问属性包并确定哪些文档属性匹配哪些列表栏,以将相应值写入列表。
下图演示文档升级过程。在此过程中,分析程序从文档中提取文档属性并将其写入属性包。四个文档属性中的三个属性包含在文档的内容类型中。SharePoint Foundation 会依次将属性包中的各个属性与文档库的列(字段)相匹配,然后将这些属性升级到文档库;即,它会将其属性值写入相应列。由于文档的内容类型不包含"状态"列,因此 SharePoint Foundation 不会升级第四个文档属性(即"状态"),即使该文档库包括匹配的列也是如此。SharePoint Foundation 还会将全部四个文档属性写入表示文档库中文档的 SPFile 对象的 Properties 属性。
降级
SharePoint Foundation 可创建 IParserPropertyBag 接口 的实例,并使用列表中指定的文档属性填充该对象。然后,它会对文档类型调用文档分析程序,并调用该分析程序的 降级,以便将文档和属性包作为参数传递。Demote 方法会访问属性包,将列表栏与文档属性相匹配,并将相应的值写回文档。
下图显示文档属性降级过程。为了更新两个文档属性,SharePoint Foundation 将调用分析程序,并向其传递要更新的文档以及包含两个文档属性的属性包对象。分析程序从属性包中读取属性值并更新文档中的属性。分析程序更新文档后,它会在输出参数中设置一个传递标记,指出它已更改该文档。然后 SharePoint Foundation 会将更新后的文档保存到文档库。