Windows SharePoint Services(WSS) 3.0是微软发布的针对企业级Web站点的开发和管理工具。WSS的工作核心是文档库(Document Library)和列表(List)。两者非常类似,都是数据的组织和存储方式。不同之处在于,文档库是用来存储各种各样的文档的,比如doc,docx,ppt,pdf等等;文档库提供文档的组织和管理方式,让站点的使用者可以共享文档,从而实现工作流(Workflow)。而列表则比较像常规意义上的数据库。
列表的每一列代表一个栏位(Column),这个栏位的数据类型称为字段(Field)。字段可以有许多种类型,在WSS中预定义的字段包括电话号码,姓氏,名字,创建日期,公司等等。列表的每一行则代表一个数据项。
内容类型(Content Type)可以理解为列表的定义。内容类型定义了列表拥有哪些字段,以及列表的工作流。
实际应用中,我们常常需要不同的、自定义的列表和工作流。虽然WSS的管理界面可以让我们非常简单的为列表创建新的栏位,但是“简单”的代价就是“低效”。试想当我们需要建立许多用处不同但是内容类似的列表时,手工建立栏是一件多么耗时的工作。另一方面,如前所述,WSS提供了有限的预定义的字段。如果我们需要自定义的字段类型,同样需要在管理界面中手工建立,甚为不便。
幸运的是,WSS提供了良好的可扩展平台, 让我们可以自由的定制上述的Filed和Content Type。WSS的这一平台称为“Feature”,即通过编写轻量级的XML文档就可以实现对于WSS中许多内容的定制,包括字段和内容类型。
文件夹 C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES存储了WSS的Feature.xml文件。在其中的fields文件夹中定义了WSS内置的字段类型。大家不妨查阅这个xml文件并参考MSDN以了解每个<Field>标签下的属性含义,以及其父标签和子标签。这里需要说明的一个概念是字段类型(Field Type)。每一个字段的定义中,都会出现“字段类型”。所谓字段类型,就是字段的格式,限制和现实方式的定义。举个例子,“姓氏”,“名称”,“部门”是不同的三个字段,但是他们属于同一种字段类型--单行文本(Text)。关于字段类型的具体定义,大家可以参阅C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML文件夹下的FLDTYPES.XML文件。
下面以实例演示如何创建一个自定义的内容类型,包含有自定义的字段,之后用这个内容类型创建一个新的列表。
假设我们要创建一个新的用户管理列表,这个列表包含三个字段,分别是用户名称,用户标识,和用户部门。这三个字段全都是单行文本。
第一步:创建Feature.xml
Feature.xml指明了自定义的内容类型、字段等所在的文件。
第二步:创建UserList.xml
在这个文件中定义了新的字段User_Name,User_Id,User_Department。
第三步:创建Schema.xml
由于Schema.xml太大,这里就不全部贴出来。
我们需要改动三个地方:
(1) 在<List><MetaData>下,添加如下内容
这是新定义的Content Type
(2) 在<List><MetaData><Fields>下,添加如下内容
这是对先前定义的Field做一改动和扩展
(3) 在 <List><MetaData><Views><View BaseViewID="1"><ViewFields>下(注意,Views标签下一般有两个View标签,这里选第二个),添加如下内容
<FieldRef Name="User_Id" />
<FieldRef Name="User_Department" />
这里定义显示在列表当中的栏位
至此,我们就创建好了自定义的列表。打开网站的页面,进入创建的页面,点击“用户管理”,填入表名和说明,就可以创建一个新的列表了。
最后我想阐述一下我对xml配置文档的理解。早在用ASP.NET做网站的时候,就知道如果在web.config里面写Connection String和Profile的话,就可以非常灵活快捷的实现网站的特性。这里也是一样,虽然SharePoint的网站内容存储在数据库中难以更改,但是微软为我们提供了Feature这一强大的特性,让我们可以自由的扩展网站的内容,而对网站的其他部分不产生任何影响,而且也不需要对特性进行任何编译。另外,在未来可以用编程来实现对于xml文件的读取,从而实现更多的功能。