现在的位置: 首页 > 综合 > 正文

WSS3SDK之:内容类型ID

2012年01月15日 ⁄ 综合 ⁄ 共 1672字 ⁄ 字号 评论关闭
内容类型ID唯一标识了一个内容类型,他被设计成递归结构。内容类型ID蕴含了该内容类型的血统,或者说该内容类型继承的父内容类型线路。每个内容类型
ID都包含了其父内容类型ID,这样依次包含父内容类型ID,直到最后,包到System内容类型的ID.通过解析内容类型ID,您可以判断该内容类型继
承自哪个内容类型,哪些内容类型与之相关。
WSS使用该信息来判断内容类型间的关系,并用于推送操作。
您可以基于下列两条规则来构建一个有效的内容类型ID:
  • 父内容类型ID+两位十六进制数值(这两位数不能是"00")
  • 父内容类型ID+"00"+十六进制的GUID

一个特殊情况是,系统内容类型的内容类型ID为"0x"。系统内容类型是一个密封内容类型,所有其他的内容类型最终都继承自他。
对于所有的其他内容类型,您必须使用上面两条规则之一来构建一个有效的内容类型ID。
注意:内容类型ID必须在网站集范围内是唯一的。
一般来说,第一种内容类型ID生成技术强调简洁,因为只需要两位十六进制数就可以了;第二种内容类型ID生成技术强调唯一性,因为每个新的内容类型都包含了一个GUID。每种方式都有其对应的应用场景。

父内容类型ID+两位16进制数

WSS在其平台内置的内容类型上使用该规范来生成内容类型ID。比如,基础内容类型之一的Item为
0x01,这表示Item内容类型直接继承自系统内容类型。Document内容类型的ID为0x0101,Folder内容类型的ID为0x0102。
通过解析这些内容类型ID,您可以看出Document和Folder都直接继承自Item,间接继承自系统内容类型,如下图所示。

使用该规定,您不但可以判断内容类型的继承,还可以看出哪两个内容类型具有相同的祖先。
下图展示了先前讨论的4种内容类型的关系。在各内容类型上,用蓝色标出了内容类型ID不同的部分。

父内容类型ID+"00"+16进制GUID

WSS在下列情况下使用该规则来生成内容类型ID:

  • 您基于其他内容类型创建的网站内容类型
  • 当我们添加网站内容类型到列表中时创建的列表内容类型

比如,如果有个内容类型的ID为"0x010100D5C2F139516B419D801AC6C18942554D",你应该知道该内容类型是下列内容类型之一:

  • 一个网站内容类型,直接继承自Document内容类型
  • 当把Document网站内容类型添加到列表中时创建的一个列表内容类型

我们建议您使用GUID方式来标识那些继承自不是您创建的内容类型的内容类型。如果父内容类型是下列情况则是以GUID方式:

  • WSS包含的默认内容类型,如Document。
  • 第三方开发的内容类型。这样一来,您就可以保证内容类型ID是独一无二的,并不会和将来开发的其他内容类型重复。

在你使用GUID 的做法唯一标识内容类型之后,您可以使用第一种方法,以找出任何子内容类型。
在内容类型中GUID的使用可以看作是您的内容类型的命名空间。任何在此基础上的子内容类型,可通过两位十六进制数字来标识。因为内容类型ID的最大长度
是有限的,这种做法可以最大限度地增加内容类型的世代数 。

内容类型ID的长度

内容类型ID的最大长度为512字节。因为两位十六进制字符可以与每个字节配合使用,这样每个内容类型ID有效的最大长度为1024个字符。


例来说,假设您基于默认的WSS内容类型Document创建了一个新的内容类型, myDocument。myDocument的内容类型ID
,您需要以Document内容类型ID开头, 0x0101加上00和一个GUID
来唯一标识myDocument内容类型,以确保Windows SharePoint
Services不会在随后添加的其他默认内容类型中使用与之相同的内容类型ID (如果你只加两个十六进制数字,将很有可能)
。基于myDocument产生的任何内容类型的ID,您都可以简单地加两个十六进位数字
。这样可以使内容类型ID的长度到最低限度,从而最大限度增加允许的内容类型“世代数” 。

下图显示了这种情况。每个内容类型ID中独特的部分用蓝色文字标了出来。

抱歉!评论已关闭.