了解MOSS2007 内容类型ID(Content Type IDs)命名规则
内容类型的ID是识别内容类型的唯一标识,它设计为可递归的。 内容类型ID中隐含了内容类型的上下级继承关系,即从内容类型ID中可以看出此内容类型是继承自哪个父内容类型的,内容类型ID中包含了父内容类型ID,我们可以从内容类型ID号中找到顶级的系统内容类型。
WSS 3使用ID号中的这些信息,来确定内容类型之间的关系,以及执行操作。
内容类型可以使用两种方式中的任何一种表示:
1、 父内容类型ID + 两位十六进制的值(两位十六进制的值不能是00),如:0x0101
2、 父内容类型ID + “00” + 十六进制GUID,如:0x010100D5C2F139516B419D801AC6C18942554D
系统内容类型ID为”0x”, 所有其它内容类型都从系统内容类型继承。所有其它内容类型ID都必须使用以上两种方式之一创建一个ID号,并且此ID号在站点集里必须为唯一的。
下面分别说明两种格式的ID号:
父内容类型ID + 两位十六进制的值
WSS自带的内容类型ID均以这种方式生成。例如:基本内容类型Item的ID号为0x01,此ID指示Item的类型内容是直接继承自系统内容类型。文档内容类型(Document content type)的ID号为0x0101,文件夹内容类型(Folder content type)的ID号为:0x0120, 分以这两个ID号,我们可以看出,文档内容类型和文件夹内容类型都继承于Item内容类型,而Item内容类型又继承自系统内容类型。他们的关系如下图所示:
使用此格式,不仅能看到此内容类型是继承自哪个父内容类型,而且可以看出哪些类内容类型是继承自同一个父内容类型。
下面是我们上面说过的内容类型的上下级关系,蓝色部分是当前内容类型ID独有的部分
父内容类型ID + “00” + 十六进制GUID
WSS在以下几种情况下创建内容类型时,将使用此种规则成生内容类型ID:
1、 基于其它内容类型创建网站内容类型
2、 当增加一个网站内容类型到某个列表时,系统会将网站内容类型复制到此列表并生成为列表内容类型,此生成的内容类型ID
例如你有一个ID为“0x010100D5C2F139516B419D801AC6C18942554D”的内容类型,我们就可以认为内容类型是以下类型的一种:
1、 一个继承于文档内容类型的网站内容类型
2、 当一个文档网站内容类型(Document site content type)增加到一个列表时生成的列表内容类型
在以下几种情况时,推荐使用GUID方式的内容类型ID:
1、 继承自系统默认的内容类型,如文档内容类型
2、 继承自第三方开发的内容类型,使用GUID的内容类型ID,能保证内容类型的唯一,并且不会跟将来开发人员继承此第三方控制生成的新内容类型ID重复
当你使用GUID方式定义了一个内容类型的ID后,你仍然可以使用第一种方式给继承于此内容类型的类型命名。使用在ID中的GUID可以担当命名空间的角色,任何继承办自此内容类型的类型都能加上两位的十六进制数值来表示新ID,如“0x010100D5C2F139516B419D801AC6C18942554D05”
内容类型ID最大长度为512字节,因为一个字节可以存放两个十六进制的值,所以一个内容类型ID最多可使用1024个字符。
举个例子,假如我们基于WSS默认的文档内容类型创建了一个新的内容类型“myDocument”, 那么myDocument的内容类型ID,要以文档内容类型的ID“0x0101”开始,然后增加 “00”,再增加一个GUID,按这种方法生成的myDocument的ID,我们可以肯定在以后创建的内容类型ID中不会重复(如果采用增加两位十六进制的数字的方法,就比较困难)。我们再从“myDocument”继承创建任何的内容类型,这些内容类型的ID可以简单的增加两位十六进制的数字表示,这样即能保持新的内容类型ID最短,而且能使用更多的内容类型ID。
下图说明了我们创建的这些内容类型的关系:
下面增加系统默认的内容类型ID参考: