在SharePoint中,创建自定义列表“schema.xml”文件的最简单方法是什么?

7

像其他许多SharePoint用户一样,我不得不创建自定义列表定义。经过很多麻烦,我终于成功创建了一个(我想是的,但是让我先解决所有错误),但是是否有一个“基本”模式可以使用,或者有一个专门用于生成Schema.xml的编辑器?

9个回答

4
为了创建自定义列表定义,我通常使用内置的列表定义作为模板。
创建新特性,然后从现有特性中复制schema.xml(如果存在其他文件,则可能还需要复制),并直接使用某些文本编辑器修改schema.xml文件。我没有尝试过任何自定义编辑器,总是通过复制粘贴和更改属性值完成工作。

内置的列表定义位于12个hive中的特性中:

  • 自定义列表 - Features/CustomList/CustList/schema.xml;
  • 文档库 - Features/DocumentLibrary/DocLib/schema.xml;
  • 日历 - Feature/EventsList/Events/schema.xml;
  • 使用搜索查找其他内容。

4
我的建议是使用SharePoint Web界面,按照您想要的方式设置列表,包括视图、自定义列等。然后,将该列表保存为模板,这样可以使您更接近最终版本。
您得到的.stp文件基本上只是一个带有奇怪名称的.cab文件。将其重命名为cab并提取清单,其中将包括一个几乎可供使用的schema.xml文件。
您需要更改的是列表表单的路径或设置路径。您会在manifest.xml文件的底部找到这些内容。如果您使用默认的SharePoint列表,则可以将这些表单设置为SetupPath="pages/form.aspx"。以下是自定义列表表单元素的示例:
    <Form Type="DisplayForm" Url="DispForm.aspx" 
SetupPath="pages\form.aspx" WebPartZoneID="Main" />
    <Form Type="EditForm" Url="EditForm.aspx" 
SetupPath="pages\form.aspx" WebPartZoneID="Main" />
    <Form Type="NewForm" Url="NewForm.aspx" 
SetupPath="pages\form.aspx" WebPartZoneID="Main" />

您还需要更新每个视图的视图路径,如果在原始站点中使用默认表单,则应该设置SetupPath="pages/viewpage.aspx"。

请注意,您还需要修改其他属性,但是如果您确保遵循wss.xsd模式,并且您的自定义列表schema.xml符合wss.xsd模式验证,那么应该没问题。

.b


3
您可以使用SharePoint管理器选择要生成模式的列表,并将其用作模板。
任何模式生成都将依赖上下文,因为任何自定义字段的GUID都将特定于该SharePoint网站集合,除非它们作为以前指定的功能的一部分进行安装(依赖于已经创建了XML模式)。
SharePoint管理器是一个很好的工具,不仅因为它针对此问题,而是因为它是从SharePoint实例中获取各种信息(如模式)的一种非常有用的方式。

3

3
我经常使用Gary Lapointe的STSADM扩展来提取这种东西。也就是说,我首先使用GUI创建它,然后使用适当的方法提取列表、内容类型、站点列等。
请查看Gary的扩展列表:STSADM/PowerShell命令

1
我和Rich Finn编写了一个名为SPSource的工具,它可以将列表反向工程为列表模板、内容类型和网站列。请访问http://spsource.codeplex.com/查看详细的用户指南和网络研讨会,以了解如何使用它。

1

所有的schema.xml文件通常都存在一个大问题,那就是90%的代码都驻留在各种视图元素中。这个问题有一个非常简单的解决方案 - 使用默认的ViewStyles之一。

这里有一个直接、易读、极简的模式可以开始使用。详见http://mo.notono.us/2009/02/moss-dreaded-schemaxml.html。除非你真的非常需要调整呈现的HTML,否则不要去破坏视图caml:

<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint" Id="{AB426CDE-98F2-432A-B296-880C7931DEF3}"
     Title="Setting" Url="Lists/Setting" BaseType="0"
     FolderCreation="FALSE" DisableAttachments="TRUE" VersioningEnabled="FALSE"
     Direction="$Resources:Direction;"
     xmlns="http://schemas.microsoft.com/sharepoint/">
       <MetaData>
              <Fields>
                     <Field Type="Text" Name="Title" DisplayName="Name" Required="TRUE" />
                     <Field Type="Text" Name="Value" DisplayName="Value" Required="TRUE" />
              </Fields>
              <Views>
                     <View BaseViewID="0" Type="HTML" WebPartZoneID="Main" DisplayName="All Items" DefaultView="TRUE"
                         MobileView="True" MobileDefaultView="False" SetupPath="pages\viewpage.aspx"
                         ImageUrl="/_layouts/images/issues.png" Url="AllItems.aspx">
                           <ViewStyle ID="17"/>
                           <RowLimit Paged="TRUE">100</RowLimit>
                           <Toolbar Type="Standard" />
                           <ViewFields>
                                  <FieldRef Name="Edit" />
                                  <FieldRef Name="Title"/>
                                  <FieldRef Name="Value"/>
                           </ViewFields>
                           <Query>
                                  <OrderBy>
                                         <FieldRef Name="Title"/>
                                  </OrderBy>
                           </Query>
                     </View>
              </Views>
              <Forms>
                     <Form Type="DisplayForm" Url="DispForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
                     <Form Type="EditForm" Url="EditForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
                     <Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
              </Forms>
              <DefaultDescription>Settings used in the application.</DefaultDescription>
       </MetaData>
</List>

0

使用浏览器选项在本地开发环境中创建您想要开发的列表。将该网站保存为模板并下载到本地文件系统。

现在,使用模板创建一个新的Visual Studio项目,从解决方案包中导入。定位存储在文件系统上的解决方案包。现在,当您看到解决方案时,您会发现您创建的列表。文件schema.XML将位于列表定义中。复制内容类型、字段和视图内容,并将其粘贴到您的schema.xml文件中。


0

在 EG 的回答基础上,如果你只想更改现有列表附加的字段(但保留视图等基本相同),你需要在两个地方进行更改:列表/元数据/字段和列表/元数据/视图/视图/视图字段。

字段部分相对简单,只要按照文档的说明操作即可。

要在给定视图中显示列,您需要编辑给定视图的 ViewFields 部分。例如,如果您有名为“标题”、“作者”和“出版商”的列,希望它们在视图中显示,请找到该视图的 ViewFields 部分并按以下方式进行编辑:

<ViewFields>
  <FieldRef Name="Title" />
  <FieldRef Name="Author" />
  <FieldRef Name="Publisher" />
</ViewFields>

这些字段(仅限这些字段)应该在该视图中显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接