了解 Onet.xml 文件
上次修改时间: 2011年2月2日
适用范围: SharePoint Foundation 2010
本文内容
Onet.xml 的功能
使用自定义 Onet.xml 的网站定义任务
文件格式
安装 Microsoft SharePoint Foundation 时,将安装多个 Onet.xml 文件:一个文件位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\GLOBAL\XML 中,该文件适用于全局部署;一些文件位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates 中的不同文件夹中。后一组中的每个文件对应于 SharePoint Foundation 附带的一个网站定义。例如,它们包括博客网站、管理中心网站、会议工作区网站和 SharePoint 工作组网站。在这些系列中,只有后两个包含多个网站定义配置。
全局 Onet.xml 文件定义适用于全局部署的隐藏列表的列表模板、列表基类型、默认定义配置和模块。%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates 目录的子目录中的每个 Onet.xml 文件都可以定义在对应的网站定义中使用的导航区域、列表模板、文档模板、配置、模块、组件和服务器电子邮件页脚。
备注
Onet.xml 还是 Web 模板的一部分。一些 协作应用程序标记语言 (CAML) 元素可能位于网站定义的 Onet.xml 文件中,但是不能位于作为 Web 模板的一部分的 Onet.xml 文件中,例如,DocumentTemplates 元素。
Onet.xml 的功能
根据 Onet.xml 文件的位置以及它是网站定义还是 Web 模板的一部分,该文件中的标记具有下列部分或全部功能:
指定基于网站定义或 Web 模板创建的网站中内置的网络范围和网站集范围的功能。
指定基于网站定义或 Web 模板创建的网站中内置的列表类型、页面、文件和 Web 部件。
定义在主页上和网站定义的列表视图中显示的顶部和侧面导航区域。
指定每个网站定义中使用的列表定义,以及这些定义是否可用于在用户界面 (UI) 中创建列表。
指定网站定义中可用于在 UI 中创建文档库列表的文档模板,以及文档模板中使用的文件。
定义从中派生默认 SharePoint Foundation 列表的基列表类型。(仅全局 Onet.xml 文件具备此功能。不能定义新基列表类型。)
指定 SharePoint Foundation 组件。
定义服务器电子邮件中使用的页脚部分。
使用自定义 Onet.xml 的网站定义任务
可以在用于自定义网站定义或自定义 Web 模板的自定义 Onet.xml 文件中执行下列类型的任务:
为网站定义指定一个备用级联样式表 (CSS) 文件、JavaScript 文件或 ASPX 头文件。
修改主页和列表页面的导航区域。
将新列表定义作为选项添加到 UI 中。
为网站定义或 Web 模板定义一个 配置,指定实例化配置时包含的列表、模块、文件和 Web 部件。
指定基于网站定义或 Web 模板创建的网站自动提供的功能。
可在用于自定义网站定义的自定义 Onet.xml 文件中执行下列类型的任务,但不能在用于自定义 Web 模板的 Onet.xml 文件中执行:
添加用于创建文档库的文档模板。
为网站定义定义多个 配置,指定实例化配置时包含的列表、模块、文件和 Web 部件。
为从基于网站定义的网站发送的电子邮件定义自定义页脚。
为基于网站定义的网站定义自定义组件,如文件对话框后置处理器。
警告 |
---|
不能在网站定义或 Web 模板中创建新基列表类型。在全局 Onet.xml 文件中定义的基类型仅为受支持的基类型。 |
警告 |
---|
我们不支持对最初安装的 Onet.xml 文件进行更改。更改此文件可能会破坏现有网站。此外,安装 SharePoint Foundation 的更新或 Service Pack 或者将安装升级到下一产品版本时,可能存在 Microsoft 提供的文件的新版本,并且安装无法将您的更改与新版本合并。如果您需要类似于内置网站类型的网站类型,并且不能使用 Web 模板,则应该创建具有自己的 Onet.xml 文件的新网站定义;不要修改原始文件。有关详细信息,请参阅如何:创建自定义网站定义和配置。有关何时不能使用 Web 模板的详细信息,请参阅在自定义 Web 模板和自定义网站定义之间进行选择。 |
文件格式
下列各节定义 Onet.xml 文件的各个元素。
Project 元素
顶级 Project 元素为通过网站定义中的任意网站配置创建的网站指定一个默认名称。它还指定包含每个列表定义文件所驻留的子文件夹的目录。
备注
除非另行说明,否则,下面的示例中使用的摘录均摘自 STS 网站定义的 Onet.xml 文件。
<Project
Title="$Resources:core,onet_TeamWebSite;"
Revision="2"
ListDir="$Resources:core,lists_Folder;"
xmlns:ows="Microsoft SharePoint"
UIVersion="4">
备注
本主题的所有示例中,以"$Resources"开头的字符串是 .resx 文件中定义的常量。例如,"$ Resources:onet_TeamWebSite"在 core.resx 文件中定义为"工作组网站"。创建自定义 Onet.xml 文件时,可使用文本字符串。
此元素还可以包含一些其他属性。有关详细信息,请参阅 Project 元素(网站)。
Project 元素不包含任何标识它所定义的网站定义的属性。每个 Onet.xml 文件依靠其所驻留的目录路径与网站定义相关联,该路径(全局 Onet.xml 除外)为 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\site_type\XML\,其中,site_type 是网站定义的名称,例如 STS 或 MPS。Web 模板的 Onet.xml 文件通过包含在 Web 模板的 .wsp 包中与模板相关联。
NavBars 元素
NavBars 元素包含主页上或列表视图中显示的顶部导航区域的定义,以及主页上显示的侧面导航区域的定义。
备注
NavBar 并不一定是工具栏。例如,它可以是链接树。
<NavBars>
<NavBar
Name="$Resources:core,category_Top;"
Separator="&nbsp;&nbsp;&nbsp;"
Body="<a ID='onettopnavbar#LABEL_ID#' href='#URL#' accesskey='J'>#LABEL#</a>"
ID="1002" />
<NavBar
Name="$Resources:core,category_Documents;"
Prefix="<table border='0' cellpadding='4' cellspacing='0'>"
Body="<tr><td><table border='0' cellpadding='0' cellspacing='0'><tr><td><img src='/_layouts/images/blank.gif' id='100' alt='' border='0'>&nbsp;</td><td valign='top'><a id='onetleftnavbar#LABEL_ID#' href='#URL#'>#LABEL#</td></tr></table></td></tr>"
Suffix="</table>"
ID="1004" />
...
</NavBars>
NavBarLink 元素定义顶部或侧面导航区域的链接,整个 NavBar 节将侧面区域中的链接分组。每个 NavBar 元素为导航栏指定一个显示名称和一个唯一 ID,而且它定义如何显示导航栏。
有关在 SharePoint Foundation 页上自定义导航区域的信息,请参阅网站导航。
ListTemplates 元素
ListTemplates 节指定属于网站定义的列表定义。此标记仍然受支持,这样做只是为了实现向后兼容。新自定义列表类型应该定义为功能。下面的示例摘自会议工作区网站定义的 Onet.xml 文件。
<ListTemplates>
<ListTemplate
Name="meetings"
DisplayName="$Resources:xml_onet_mwsidmeetingDisp;"
Type="200"
BaseType="0"
Unique="TRUE"
Hidden="TRUE"
HiddenList="TRUE"
DontSaveInTemplate="TRUE"
SecurityBits="11"
Description="$Resources:xml_onet_mwsidmeetingDesc;"
Image="/_layouts/images/itevent.gif">
</ListTemplate>
<ListTemplate
Name="agenda"
DisplayName="$Resources:xml_onet_mwsidagendaDisp;"
Type="201"
BaseType="0"
FolderCreation="FALSE"
DisallowContentTypes="TRUE"
SecurityBits="11"
Description="$Resources:xml_onet_mwsidagendaDesc"
Image="/_layouts/images/itagnda.gif">
</ListTemplate>
...
</ListTemplates>
每个 ListTemplate 元素指定一个标识列表定义的内部名称。ListTemplate 元素还指定列表定义的显示名称,以及在"快速启动"栏上添加链接的选项是否在列表创建 UI 中默认显示为选中。此外,此元素还指定列表定义的说明和表示列表定义的图像的路径,二者都在列表创建 UI 中显示。如果指定了 Hidden="TRUE",则列表定义不会在列表创建 UI 中作为选项显示。
ListTemplate 元素有两个类型属性,分别是 Type 和 BaseType。Type 属性为列表定义指定唯一标识符,而 BaseType 属性则标识列表定义的基列表类型,并对应于为全局 Onet.xml 文件中定义的基列表类型之一而指定的 Type 值。
有关创建新列表类型的详细信息,请参阅如何:创建自定义列表定义。
DocumentTemplates 元素
DocumentTemplates 节定义在 UI 中列出的用于创建文档库的文档模板。此标记仍然受支持,这样做只是为了实现向后兼容。应将新文档类型定义为内容类型。有关详细信息,请参阅此 SDK 的内容类型部分。
<DocumentTemplates>
...
<DocumentTemplate
Path="STS"
DisplayName="$Resources:core,doctemp_Word;"
Type="121"
Default="TRUE"
Description="$Resources:core,doctemp_Word_Desc;">
<DocumentTemplateFiles>
<DocumentTemplateFile
Name="doctemp\word\wdtmpl.dotx"
TargetName="Forms/template.dotx"
Default="TRUE" />
</DocumentTemplateFiles>
</DocumentTemplate>
...
</DocumentTemplates>
每个 DocumentTemplate 元素为文档模板指定一个显示名称、一个唯一标识符和一个说明。如果 Default 设置为 TRUE,则对于在基于网站定义的配置之一的网站中创建的文档库,默认情况下会选择该模板。尽管名称为单数,DocumentTemplate 元素实际上可包含 DocumentTemplateFile 元素的集合。每个 DocumentTemplateFile 元素的 Name 属性都指定用作模板的本地文件的相对路径。TargetName 属性指定创建文档库时模板文件的目标 URL。Default 属性指定文件是否为默认模板文件。
备注
Web 模板中的 Onet.xml 文件不能包含 DocumentTemplate 元素。
有关涉及文档模板的开发任务,请参阅如何:向网站定义中添加文档模板、文件类型和编辑应用程序。
BaseTypes 元素
全局 Onet.xml 文件的 BaseTypes 元素在网站或列表创建过程中用于定义 SharePoint Foundation 中的所有列表定义都基于的基列表类型。列表模板节中指定的每个列表模板都用一种基类型标识:Generic List、Document Library、Discussion Forum、Vote or Survey 或 Issues List。
备注
在 SharePoint Foundation 中,BaseTypes 节仅在全局 Onet.xml 文件中实现,下面的示例就摘自该文件。
<BaseTypes>
<BaseType
Title="Generic List"
Image="/_layouts/images/itgen.gif"
Type="0">
<MetaData>
<Fields>
<Field
ID="{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}"
ColName="tp_ID"
RowOrdinal="0"
ReadOnly="TRUE"
Type="Counter"
Name="ID"
PrimaryKey="TRUE"
DisplayName="$Resources:core,ID"
SourceID="https://schemas.microsoft.com/sharepoint/v3"
StaticName="ID">
</Field>
<Field
ID="{03e45e84-1992-4d42-9116-26f756012634}"
RowOrdinal="0"
Type="ContentTypeId"
Sealed="TRUE"
ReadOnly="TRUE"
Hidden="TRUE"
DisplayName="$Resources:core,Content_Type_ID;"
Name="ContentTypeId"
DisplaceOnUpgrade="TRUE"
SourceID="https://schemas.microsoft.com/sharepoint/v3"
StaticName="ContentTypeId"
ColName="tp_ContentTypeId">
</Field>
...
</Fields>
</MetaData>
</BaseType>
...
</BaseTypes>
每个 BaseType 元素都指定从基类型派生的列表中使用的字段。每个 Field 元素的 Type 属性都使用 FldTypes.xml 中定义的字段类型来标识字段。
警告 |
---|
不要修改全局 Onet.xml 的内容;这样做会破坏安装。不能添加基列表类型。有关如何添加列表定义的信息,请参阅如何:创建自定义列表定义。 |
Configurations 元素
Configurations 节中的每个 Configuration 元素指定实例化网站定义配置或 Web 模板时默认创建的列表、模块和功能。
<Configurations>
...
<Configuration
ID="0"
Name="Default">
<Lists>
<List
FeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101"
Type="101"
Title="$Resources:core,shareddocuments_Title;"
Url="$Resources:core,shareddocuments_Folder;"
QuickLaunchUrl="$Resources:core,shareddocuments_Folder;/Forms/AllItems.aspx" />
...
</Lists>
<Modules>
<Module
Name="Default" />
</Modules>
<SiteFeatures>
<Feature
ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
<Feature
ID="FDE5D850-671E-4143-950A-87B473922DC7" />
</SiteFeatures>
<WebFeatures>
<Feature
ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5" />
<Feature
ID="F41CC668-37E5-4743-B4A8-74D1DB3FD8A4" />
</WebFeatures>
</Configuration>
...
</Configurations>
ID 属性用于标识配置,该属性相对于 Configurations 元素中其他配置(如果有)而言是唯一的。如果 Onet.xml 文件是网站定义的一部分,则 ID 值对应于 WebTemp*.xml 文件中 Configuration 元素的 ID 属性。(Web 模板不具有 WebTemp*.xml 文件。)
每个 List 元素指定列表定义的标题和创建列表的位置的 URL。可使用 QuickLaunchUrl 属性设置将"快速启动"中某个链接添加到根据列表定义创建的列表时要使用的视图页的 URL。Type 属性的值对应于列表模板部分中某个模板的 Type 属性。每个 Module 元素指定模块部分中定义的某个模块的名称。
SiteFeatures 元素和 WebFeatures 元素包含对要包含在网站定义中的网站集和网站范围功能的引用。
对于后处理功能,请使用 Configuration 元素中的 ExecuteUrl 元素来指定网站实例化后调用的 URL。
有关定义配置的详细信息,请参阅如何:创建自定义网站定义和配置。
Modules 元素
Modules 集合指定模块池。如果池中的任何模块应该包含在基于配置创建的网站中,则可以由该配置引用该模块。每个 Module 元素又指定要包含的一个或多个文件(通常针对 Web 部件),这些文件与架构文件一起缓存在前端 Web 服务器上的内存中。可使用 Module 元素的 Url 属性将文件夹设置为网站定义的一部分。支持此标记只是为了实现向后兼容。新模块应该包含在功能中。
<Modules>
<Modules>
<Module
Name="Default"
Url=""
Path="">
<File
Url="default.aspx"
NavBarHome="True">
<View
List="$Resources:core,lists_Folder;
/$Resources:core,announce_Folder;"
BaseViewID="0"
WebPartZoneID="Left" />
<View
List="$Resources:core,lists_Folder;
/$Resources:core,calendar_Folder;"
BaseViewID="0"
RecurrenceRowset="TRUE"
WebPartZoneID="Left"
WebPartOrder="2" />
<AllUsersWebPart
WebPartZoneID="Right"
WebPartOrder="1"><![CDATA[<WebPart
xmlns="https://schemas.microsoft.com/WebPart/v2"
xmlns:iwp="https://schemas.microsoft.com
/WebPart/v2/Image">
<Assembly>Microsoft.SharePoint, Version=12.0.0.0,
Culture=neutral,
PublicKeyToken=71e9bce111e9429c</Assembly>
<TypeName>Microsoft.SharePoint.WebPartPages.ImageWebPart
</TypeName>
<FrameType>None</FrameType>
<Title>$Resources:wp_SiteImage;</Title>
<iwp:ImageLink>/_layouts/images/homepage.gif
</iwp:ImageLink>
<iwp:AlternativeText>$Resources:core,sitelogo_wss;
</iwp:AlternativeText>
</WebPart>]]>
</AllUsersWebPart>
<View
List="$Resources:core,lists_Folder;
/$Resources:core,links_Folder;"
BaseViewID="0"
WebPartZoneID="Right"
WebPartOrder="2" />
<NavBarPage
Name="$Resources:core,nav_Home;"
ID="1002"
Position="Start" />
<NavBarPage
Name="$Resources:core,nav_Home;"
ID="0"
Position="Start" />
</File>
</Module>
...
</Modules>
Module 元素指定模块的名称,此名称对应于在 Onet.xml 中的配置内指定的模块名称。
模块中的每个 File 元素的 Url 属性均指定在创建网站时要创建的文件的名称。如果模块包含单个文件(例如 default.aspx),则 NavBarHome="TRUE" 指定该文件将作为导航栏中 Home 链接的目标网页。default.aspx 的 File 元素还指定要在主页上包含的 Web 部件,并为链接到主页的其他网页指定主页相关信息。
Module 元素只能位于作为网站定义的一部分的 Onet.xml 文件中,不能位于作为 Web 模板的一部分的 Onet.xml 文件中。
有关在 SharePoint Foundation 中使用模块的详细信息,请参阅如何:设置文件。
Components 元素
Components 元素指定要在通过定义创建的网站中包含的组件。
<Components>
<FileDialogPostProcessor ID="BDEADEE4-C265-11d0-BCED-00A0C90AB50F" />
</Components>
Components 元素只能包含在作为网站定义的一部分的 Onet.xml 文件中,不能包含在作为 Web 模板的一部分的 Onet.xml 文件中。
ServerEmailFooter 元素
ServerEmailFooter 元素指定在服务器上所发送的电子邮件中使用的页脚部分。
<ServerEmailFooter>$Resources:ServerEmailFooter;</ServerEmailFooter>
ServerEmailFooter 元素只能包含在作为网站定义的一部分的 Onet.xml 文件中,不能包含在作为 Web 模板的一部分的 Onet.xml 文件中。