内容类型ID唯一标识了一个内容类型,他被设计成递归结构。内容类型ID蕴含了该内容类型的血统,或者说该内容类型继承的父内容类型线路。每个内容类型 ID都包含了其父内容类型ID,这样依次包含父内容类型ID,直到最后,包到System内容类型的ID.通过解析内容类型ID,您可以判断该内容类型继 承自哪个内容类型,哪些内容类型与之相关。
WSS使用该信息来判断内容类型间的关系,并用于推送操作。
您可以基于下列两条规则来构建一个有效的内容类型ID:
对于所有的其他内容类型,您必须使用上面两条规则之一来构建一个有效的内容类型ID。
注意:内容类型ID必须在网站集范围内是唯一的。
一般来说,第一种内容类型ID生成技术强调简洁,因为只需要两位十六进制数就可以了;第二种内容类型ID生成技术强调唯一性,因为每个新的内容类型都包含了一个GUID。每种方式都有其对应的应用场景。
使用该规定,您不但可以判断内容类型的继承,还可以看出哪两个内容类型具有相同的祖先。
下图展示了先前讨论的4种内容类型的关系。在各内容类型上,用蓝色标出了内容类型ID不同的部分。
在你使用GUID 的做法唯一标识内容类型之后,您可以使用第一种方法,以找出任何子内容类型。 在内容类型中GUID的使用可以看作是您的内容类型的命名空间。任何在此基础上的子内容类型,可通过两位十六进制数字来标识。因为内容类型ID的最大长度 是有限的,这种做法可以最大限度地增加内容类型的世代数 。
举 例来说,假设您基于默认的WSS内容类型Document创建了一个新的内容类型, myDocument。myDocument的内容类型ID ,您需要以Document内容类型ID开头, 0x0101加上00和一个GUID 来唯一标识myDocument内容类型,以确保Windows SharePoint Services不会在随后添加的其他默认内容类型中使用与之相同的内容类型ID (如果你只加两个十六进制数字,将很有可能) 。基于myDocument产生的任何内容类型的ID,您都可以简单地加两个十六进位数字 。这样可以使内容类型ID的长度到最低限度,从而最大限度增加允许的内容类型“世代数” 。
下图显示了这种情况。每个内容类型ID中独特的部分用蓝色文字标了出来。
WSS使用该信息来判断内容类型间的关系,并用于推送操作。
您可以基于下列两条规则来构建一个有效的内容类型ID:
- 父内容类型ID+两位十六进制数值(这两位数不能是"00")
- 父内容类型ID+"00"+十六进制的GUID
对于所有的其他内容类型,您必须使用上面两条规则之一来构建一个有效的内容类型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:- 您基于其他内容类型创建的网站内容类型
- 当我们添加网站内容类型到列表中时创建的列表内容类型
- 一个网站内容类型,直接继承自Document内容类型
- 当把Document网站内容类型添加到列表中时创建的一个列表内容类型
- 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中独特的部分用蓝色文字标了出来。
td { font-size: 12px } .commentTextBox { font-family : Verdana; font-size: 13px; } a.blue:visited, a.blue:active, a.blue:link, a.blue:hover { color:blue; }
.userData { BEHAVIOR: url(#default#userdata) } <script type="text/javascript"> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest); //Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest); } function handleInitializeRequest(sender, args) { var prm = Sys.WebForms.PageRequestManager.getInstance(); var eid = args.get_postBackElement().id; /*if (eid.indexOf("DeleteLink")>0) { args.get_postBackElement().innerHTML = "<font color='red'>正在删除...</font>"; } else */ if (eid.indexOf("btnSubmit")>0) { document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交..."; document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true; } else if(eid.indexOf("refreshList")>0) { document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML="<font color='red'>正在刷新...</font>"; } } function TempSave(ElementID) { try { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } catch(ex) { } } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </script>