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

时间:2009-01-13 23:10:22

标签: sharepoint list sharepoint-2007 wss-3.0

与许多其他SharePoint用户一样,我必须创建自定义列表定义。经过很多麻烦后,我设法创建了一个(我想,让我先解决所有错误),但是我可以从那里开始使用“基本”模式,或者为{{1}创建一个专用编辑器生成?

9 个答案:

答案 0 :(得分:4)

我的建议,以及最接近最终版本的内容,是使用SharePoint网络界面,根据需要设置列表,包括视图,自定义列等。然后,将列表另存为模板。

你得到的.stp文件基本上只是一个有趣名字的.cab文件。重命名为cab并解压缩清单,其中包含一个几乎可以使用的schema.xml文件供您使用。

您需要更改的是列表表单的路径或setuppath。您可以在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

答案 1 :(得分:4)

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

内置列表定义位于12个配置单元中作为功能:

  • 自定义列表 - 功能/ CustomList / CustList / schema.xml;
  • 文档库 - Features / DocumentLibrary / DocLib / schema.xml;
  • 日历 - 功能/事件列表/事件/ schema.xml;
  • 使用搜索查找其他人。

答案 2 :(得分:3)

您可以使用SharePoint manager选择您想要架构的列表,并将其用作模板。

任何模式生成都依赖于上下文,因为任何自定义字段的GUID都将特定于该SharePoint网站集,除非它们作为先前指定的功能的一部分安装(依赖于已经创建的XML模式)。 p>

SharePoint管理器是一个很好的工具,不是因为它特定于此问题,而是因为它是一种非常从SharePoint实例中获取各种信息(如模式)的有用方法

答案 3 :(得分:3)

随着Windows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2出现了一个名为“SharePoint Solution Generator 2008”的应用程序。此应用程序有一些限制(最差的是IMO that lookup columns disappear ),但它会创建您需要创建的文件,即现有SharePoint列表中的功能。这包括schema.xml。

答案 4 :(得分:3)

我总是使用Gary Lapointes STSADM扩展来提取那种东西。也就是说,我首先使用GUI创建它,然后使用适当的方法提取列表,内容类型,站点列等。

STSADM/PowerShell Commands 中查看Garys扩展列表。

答案 5 :(得分:1)

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

这是一个直接的,可读的简约模式。有关详细信息,请阅读http://mo.notono.us/2009/02/moss-dreaded-schemaxml.html。 除非你真的,真的需要调整渲染的html,不要再烦扰视图了:

<?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>

答案 6 :(得分:1)

Myself和Rich Finn编写了一个名为SPSource的工具,可以将工程师列表反向列出模板,内容类型和站点列。请在http://spsource.codeplex.com/查看详细的用户指南和网络广播,向您展示如何使用它。

答案 7 :(得分:0)

添加到EG的答案,如果您只想更改附加到现有列表的字段(但保留视图等基本相同),您必须在基本上两个地方更改内容:List / MetaData /字段和List / MetaData / Views / View / ViewFields。

“字段”部分相对简单,假设您遵循the documentation

要使列显示在给定视图中,您必须编辑给定视图的ViewFields部分。例如,如果要在视图中显示名为Title,Author和Publisher的列,请查找该视图的ViewFields部分并按如下所示进行编辑:

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

那些字段(以及那些字段)应该显示在该视图中。

答案 8 :(得分:0)

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

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