内容类型是贯穿整个Microsoft Windows SharePoint Services 3.0中提供的功能和服务的核心概念,它是为帮助用户以一种有意义的方式来组织他们SharePoint内容而设计的。一种内容类型是一组可以重用的设置集合,这组设置集合是应用于某一个特定的目录内容的。内容类型可以让你使用一种集中的,可重用的方式来管理文档或者项目类型的元信息和行为。
比如说,下面有两种类型的文档:软件说明书和合法契约。自然而然的,你会想把这两种类型的文档存储在同一个文档库中。但是,这两种文件的元信息会有很大的差异。另外,你也许会要把两种不同的工作流赋予这两种文档。
内容类型封装的必要条件
内容类型可以让你在相同的文档库或者列表中存储不同类型的内容。在上一个例子中,你可以定义两种内容类型:“说明书”和“合同”。每一个内容类型会包含不同的列,这些列用来描述项目的元信息,你也同样可以把不同的工作流赋值进来。这样一来,两种内容类型就可以存储在同一个文档库中了。
你可以把内容类型看作一个精巧和功能扩展的Windows SharePoint Services 2.0的列表,这种列表默认状态下只有一个单独的数据结构或者说是一个图式(schema),这个列表的所有项目必须依附于它。在Windows SharePoint Services 2.0中,一个项目的图式离不开它位置的约束。当你定义了一个列表或者文档库,同时也会定义这个列表或者库的列,有效地定义位置中存储的所有项目的图式。每一列会有一段附加的数据从而用来跟踪列表中的所有项目。
内容类型对数据图式进行了有效的封装,并且让他独立于SharePoint列表位置。在Microsoft Windows SharePoint Services 3.0中,你可以在相同的列表或者文档库中以多种内容类型来创作多态的图式(multiple schemas)。说明书内容类型也许会有以下元信息列:项目经理、开发者和测试经理。合同内容类型会有以下列:律师和签署人。这样一来说明书和合同可以无差别的存在于同一个列表或者文档库中。
内容类型设置
你可以通过对它进行附加的设置更加灵巧的扩展内容类型的功能,比如工作流,甚至自定义的属性。
一个内容类型包括以下的信息:
· 这种类型所具有的元信息,或者说是属性,这些效果可以在你增加内容类型的时候通过向列表或者文档库中增加列来实现。
· 定制新建、编辑和显示表单来操作这些内容类型。
· 工作流可应用于项目或者本内容类型。这些工作流自动的基于设定的事件或者条件或者通过用户来选择。
· 对于文档内容类型,文档模板是基于这种类型的。
· 任何必须的已设定的解决方案都是由这种内容类型来组织的(比如例子中的软件说明书这种解决方案,那么就用说明书这种内容类型来描述说明书这种类型)。你可以将这种内容类型包含的信息存储成一个或多个XML文件。
内容类型促进了内容标准化
因为内容类型可以独立于任何特定的列表或者文档库被定义,所以你可以让一个给定的内容类型在多个SharePoint站点中有效。这样可以让你集中设定和管理在你网站集中存储的内容类型。比如,你可以使用你的“说明书”内容类型来确保多有的软件说明书都具有相同的元信息,即使这些元信息是跨站存储的。
Content Types are File Format Independent内容类型是文件格式无关的
内容类型是文件格式无关的。对于文档库来说,你可以指定一个文档模板;当这个用户发出了一个创建这种文档的请求的时候,Windows SharePoint Services 会创建一个基于这个模板的新的文档但是,用户仍然可以上传基于不同模板的文档,甚至是完全不同的内容类型。
比如,假设你需要建立一个内容类型来表现一个“商业计划”。这个内容类型可以被应用于任何一种的文件格式。你会有如下的:
-
Microsoft Office Word 文档包含背景信息
-
Microsoft Office Excel 文档包含财务计划
-
Microsoft Office PowerPoint 演示资本风险程度
-
Windows Media 用来做demo
-
SharePoint 列表项目包含了文件的元信息
所有的这些文件会指派到“商业计划”内容类型中。
你可以让一个SharePoint内容类型并不包含任何一种文件,比如列表项或者文件夹(注:列表项是信息组织形式,文件夹也是文件在存储器上的组织形式,这两种都不是文件)。文档的内容类型只能应用于文档库中;同样的,列表的内容类型只能应用于列表。不过文件夹内容类型即可以应用于列表,也可以应用于文档库。
内容类型的建立
你可以通过以下三种方式来建立列和内容类型
-
使用WSS自带的用户图形接口(就是以aspx页面的方式实现)
-
使用WSS的对象模型(以编程方式实现)
-
开发出一个基于XML格式的功能文件(Feature.xml)
站点级的内容类型是可以继承的,比如在站点上建立一个内容类型,那么在子站点和列表中都是可以使用的。