CAML(协作应用程序标记语言)
1.Geq(>=)
The Geq element is an arithmetic operator that means "greater than or equal to." It can be used within a Where element in a view definition.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Expires" />
</IsNull>
<Geq>
<FieldRef Name="Expires" />
<Value Type="DateTime">
<Today />
</Value>
</Geq>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
2.Eq(=)
The Eq element is an arithmetic operator that means "equal to" and is used within the Query element.
<Query>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE"></FieldRef>
</OrderBy>
<Where>
<Or>
<Eq>
<FieldRef Name="Status"></FieldRef>
<Value Type="Text">Completed</Value>
</Eq>
<IsNull>
<FieldRef Name="Status"></FieldRef>
</IsNull>
</Or>
</Where>
</Query>
3.Gt(>)
The Gt element is an arithmetic operator that means "greater than." This element is used similarly to Eq and Lt.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Deadline" />
</IsNull>
<Gt>
<FieldRef Name="Deadline" />
<Value Type="DateTime">
<Today />
</Value>
</Gt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
4.Lt(<)
The Lt element is an arithmetic operator that means "less than" and is used in queries in views. This element is used similarly to Eq and Gt.
<Query>
<Where>
<Or>
<IsNull>
<FieldRef Name="Deadline" />
</IsNull>
<Lt>
<FieldRef Name="Deadline" />
<Value Type="DateTime">
<Today />
</Value>
</Lt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE" />
</OrderBy>
</Query>
5.Neq(!=)
The Neq element is an arithmetic operator that means "not equal to" and is used in queries.
<Query>
<OrderBy>
<FieldRef Name="Modified" Ascending="FALSE"></FieldRef>
</OrderBy>
<Where>
<Or>
<Neq>
<FieldRef Name="Status"></FieldRef>
<Value Type="Text">Completed</Value>
</Neq>
<IsNull>
<FieldRef Name="Status"></FieldRef>
</IsNull>
</Or>
</Where>
</Query>
SPQuery 的Where 子句的用法
1、一个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Eq><FieldRef
Name='Name'/><Value Type='Text'>Joe</Value></Eq> </Or>
</Where>
2、两个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Or> <Eq>
<FieldRef Name='Name'/><Value Type='Text'>Joe</Value></Eq>
<Eq><FieldRef Name='Name'/><Value Type='Text'>Linda</Value></Eq>
</Or> </Or> </Where>
3、三个条件实例
<Where> <Or> <Eq><FieldRef Name='Name'/>
<Value Type='Text'>Mark</Value></Eq> <Or> <Eq>
<FieldRef Name='Name'/><Value Type='Text'>Joe</Value></Eq>
<Eq><FieldRef Name='Name'/><Value Type='Text'>Linda</Value></Eq>
</Or> </Or> </Where>
下表是CAML查询的一些简单说明:
元素 |
说明 |
And |
并且 |
BeginsWith |
以某字符串开始的 |
Contains |
包含某字符串 |
Eq |
等于 |
FieldRef |
一个字段的引用 (在GroupBy 中使用) |
Geq |
大于等于 |
GroupBy |
分组 |
Gt |
大于 |
IsNotNull |
非空 |
IsNull |
空 |
Leq |
小于等于 |
Lt |
小于 |
Neq |
不等于 |
Now |
当前时间 |
Or |
或 |
OrderBy |
排序 |
Today |
今天的日期 |
TodayIso |
今天的日期(ISO格式) |
Where |
Where子句 |
简介
协作应用程序标记语言 (CAML) 的 View 元素提供一个在 Microsoft SharePoint? Team Services 的数据库中执行查询和返回值的灵活方法。此元素适应对自定义 SharePoint Team Web 站点的广泛需求,从执行查询以便将数据返回到脚本进行处理,到布置页面部分中列表数据的显示。
要点 您必须具有写页面权限,才能上载页面。您必须以本地 Administrators 组成员的身份登录到服务器计算机,才能写入数据库。
根据您的目的是返回并显示值,还是仅返回值以便在脚本中进行处理,Web 站点的 Default.htm 页或任何列表的 AllItems.htm 页上的列表视图典型方案包含下列子元素。
- Query 如果您只希望在一个列表中返回所有值,则该子元素可以为空。
- ViewBody 可以使用 ViewBody 子元素(带有或不带 ViewHeader 和 ViewFooter 元素)来布置用于显示数据的视图表。
- ViewEmpty ViewEmpty 子元素指定当查询未返回任何数据时所显示的内容。它还为执行替代视图提供了有用的制约性,以防查询中不返回任何项目。请参见下面的示例。
- ViewFields 当视图不用于显示项目,只用于返回值进行处理时,ViewFields 子元素可以为空。
- RowLimit RowLimit 子元素指定要在当前窗口中显示的项目数。
- PagedRowset 当 RowLimit 元素包含的值超出时,PagedRowset 子元素将为下一个窗口定义一个视图。
- Toolbar 在 AllItems.htm 页上,Toolbar 子元素定义紧靠列表视图之上的页中显示的按钮和部分行。
CAML HTML 元素与 CDATA 标记共同用来在视图中嵌入标记语言或脚本(例如 <HTML><![CDATA[<TABLE><TR><TH>]]></HTML>)。
要点 为了完成下述任务,您必须具有写页面权限才能上载页面。您必须以本地 Administrators 组成员的身份登录到计算机,才能写入数据库。
假设您具有 SharePoint Team Services 数据库的访问权,则可以通过从 Views 表的 View 列复制视图方案来学习和自定义视图。如果有许多视图,您可以通过要修改 ListView 组件的全局统一标识符 (GUID) 来标识相应的数据库记录。在其他情况下(例如在表单中),您可能需要引用 Lists 表(列表的列表)中 ID、Name 或 Title 列值的组合。然后,您可以使用其视图方案替换整个组件,并使用以下 CAML 包围已复制的视图:
<ows:XML>
<SetList>[u_YourCustomListName[without "u_" for native lists]]</SetList>
<View>
.
.
.
[Copied view schema goes here]
.
.
.
</View>
</ows:XML>
在 Microsoft FrontPage 中,您可以选择一个视图,右键单击此视图,然后单击 Layout Customization 以展开视图方案并进行自定义。
注 应始终保存原始站点页面的副本,以便可以在需要时复原组件。
创建基本列表视图
下例布置了用于显示自定义列表 (u_MyCustomList) 的视图表。ViewFields 元素指定要在视图页眉中显示的 Title、Stock 和 Price 字段名称以及视图正文中显示的这些字段的值。
<ows:XML>
<SetList>[u_MyCustomList]</SetList>
<View Name="MyNewView">
<ViewFields>
<FieldRef Name="Title"/>
<FieldRef Name="Stock"/>
<FieldRef Name="Price"/>
</ViewFields>
ViewHeader 元素包含 Fields 和 Field 元素,这些元素枚举了 ViewFields 元素所指定的字段名称。HTML 元素包含用于显示表格标题的标记语言,这取决于 Web 或子站点的 /_layouts/styles/ows.css 文件中定义的 ms-vh 样式。
<ViewHeader>
<HTML><![CDATA[<TABLE><TR class="ms-vh">]]></HTML>
<Fields>
<HTML><![CDATA[<TH>]]></HTML>
<Field/>
<HTML><![CDATA[</TH>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewHeader>
ViewBody 元素包含为列表中的每个项目枚举字段值的 Fields 和 Field 元素。HTML 元素包含用于在表格单元格中显示这些值的标记语言,这取决于 Web 或子站点的 /_layouts/styles/ows.css 文件中定义的 ms-vb 样式。
<ViewBody>
<HTML><![CDATA[<TR class="ms-vb">]]></HTML>
<Fields>
<HTML><![CDATA[<TD>]]></HTML>
<Field/>
<HTML><![CDATA[</TD>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewBody>
<ViewFooter>
<HTML><![CDATA[</TABLE>]]></HTML>
</ViewFooter>
Query 部分查询股票小于 15 或价格大于 20.00 的情况。
<Query>
<Where>
<Or>
<Lt>
<FieldRef Name="Stock"/>
<Value Type="Number">
15
</Value>
</Lt>
<Gt>
<FieldRef Name="Price"/>
<Value Type="Currency">
20.00
</Value>
</Gt>
</Or>
</Where>
<OrderBy>
<FieldRef Name="Title"/>
</OrderBy>
</Query>
</View>
</ows:XML>
为了返回指定字段的所有值,您可以转而使用空的 Query 元素 ()。
在脚本中使用视图
下例说明了如何使用 CAML 视图返回项目 ID 并将它们指定给数组,以便在脚本中进行处理。此视图返回事件日期晚于 1/1/2002 的以逗号分隔的项目 ID 列表。这些项目 ID 被指定给 strIDs 变量,然后逐一显示在消息框中。
<Script language="JavaScript">
function getIDs()
{
var arrIDs = new Array();
var strIDs="<ows:XML>
<SetList>Events</SetList>
<View>
<ViewFields>
<FieldRef Name="ID"/>
</ViewFields>
<ViewBody>
<Fields>
<Field/>
<HTML><![CDATA[,]]></HTML>
</Fields>
</ViewBody>
<Query>
<Where>
<Gt>
<FieldRef Name="EventDate"/>
<Value Type="DateTime">2002-01-01T00:00:00Z</Value>
</Gt>
</Where>
</Query>
</View>
</ows:XML>";
arrIDs=strIDs.split(/,/);
alert(arrIDs);
}
</Script>
注 如果您要在 CAML 视图中动态插入用户输入的数据,而不只是像上例中那样对值进行硬编码,则需要从解释器掩盖 CAML,以防止立即处理该视图。有关详细信息,请参阅使用 XMLHTTP 在 SharePoint Team Services 中发布命令。
添加个性化消息
为了获得当前用户的名称并显示个性化消息,以下代码示例针对 UserInfo 表执行查询,此表是数据库中的全局列表,该数据库包含虚拟服务器上所有小组 Web 站点的所有用户信息。
<ows:XML>
<SetList>UserInfo</SetList>
<View>
<ViewFields>
<FieldRef Name="Title"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML>
<![CDATA[<TABLE><TR><TD class="Greeting">Hello ]]>
</HTML>
<Field Name="Title"/>
<HTML>
<![CDATA[, welcome to the team Web site.</TD></TR></TABLE>]]>
</HTML>
</ViewBody>
</View>
</ows:XML>
此示例查询当前用户的 ID 与 UserInfo 表中的 ID 相匹配的情况,并按 ViewFields 元素的指定显示对应的 Title 字段值(在此例中为用户名)。CDATA 部分布置用于对齐页面上个性化问候的简单表。请注意,为了设置格式,可将自定义样式定义添加到 ows.css 并在 HTML 及其元素中实现。
列出服务器上的所有子站点
下例显示如何通过创建数据库中 Projects 表的视图来创建返回服务器上所有子站点链接列表的视图:
<ows:XML>
<SetList>Projects</SetList>
<View Name="ProjectsView">
<ViewFields>
<FieldRef Name="Title"/>
<FieldRef Name="HomePageID" Explicit="TRUE"/>
</ViewFields>
<ViewHeader>
<HTML><![CDATA[<TABLE>]]></HTML>
</ViewHeader>
<ViewBody>
<HTML><![CDATA[<TR><TD>]]></HTML>
<HTML><![CDATA[<a target="_blank" href="]]></HTML>
<LookupColumn Name="HomePageID"/>
<HTML><![CDATA[">]]></HTML>
<Field Name="Title"/>
<HTML><![CDATA[</a></TD></TR>]]></HTML>
</ViewBody>
<ViewFooter>
<HTML><![CDATA[</TABLE>]]></HTML>
</ViewFooter>
</View>
</ows:XML>
HomePageID 字段是 DocMd 表(该表存储服务器上的所有 URL)的查找字段。此处,HTML target 属性设置为 _blank,以便当用户单击子站点链接时,该子站点会显示在新窗口中。
预填充输入框
要使用当前用户的名称和电子邮件地址来预填充表单,您可以创建一个返回此用户名的视图,然后将其指定给一个变量。使用 GetEmailFromUser 元素返回当前用户的电子邮件地址。
首先,添加一个 CAML 岛,它将此视图定义给包含该表单的页面(为了适应 MSDN Web 布局的需要,此代码示例已经“被截断”):
<ows:XML>
<SetList>UserInfo</SetList>
<View>
<ViewFields>
<FieldRef Name="Name"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<SetVar Name="UName" Scope="Request"><Field
Name="Name"/></SetVar>
</ViewBody>
</View>
</ows:XML>
请注意,此视图只用于返回当前用户的名称,此名称已指定给自定义 CAML 变量 UName。然后,您可以添加两个输入框,将适当的 CAML 指定给它们的 value 属性:
<input type="text" name="username" size="38" value="<ows:GetVar Name="UName"/>">
<input type="text" name="user_email" size="38" value="<ows:GetEmailFromUser HTMLEncode="TRUE"><UserID/></ows:GetEmailFromUser>">
在视图中嵌入视图
视图可以嵌入到其他视图中,以便从 SharePoint Team Services 数据库中的多个表返回值。在下例中,将两个视图嵌入到主页上的另一个框架视图中,以便根据当前用户是否有过期任务来显示不同的消息。
此示例包含 Tasks 列表的两个视图,一个用于在当前用户有过期任务的情况下返回具有特定格式的消息,另一个用于返回过期项目的视图。
<ows:XML>
<SetList>Tasks</SetList>
<View>
<ViewFields>
<FieldRef Name="AssignedTo"/>
</ViewFields>
<Query>
<Where>
<And>
<Eq>
<FieldRef Name="AssignedTo"/>
<Value Type="Integer">
<UserID/>
</Value>
</Eq>
<And>
<Lt>
<FieldRef Name="DueDate"/>
<Value Type="DateTime">
<Today/>
</Value>
</Lt>
<Neq>
<FieldRef Name="Status"/>
<Value Type="Choice">Completed</Value>
</Neq>
</And>
</And>
</Where>
</Query>
<ViewBody>
<HTML><![CDATA[<TABLE><TR><TD class="Warning">Hello ]]></HTML>
<LookupColumn Name="AssignedTo" HTMLEncode="TRUE"/>
<HTML><![CDATA[, these items are now past due!</TD></TR>
<TR><TD>
<A href="mailto:Manager_Name@example.com" class="ResolveNow">
Please contact your manager</A>
</TD></TR>
<TR><TD>]]></HTML>
此框架视图可针对当前用户的 ID 等于 AssignedTo 字段值的情况以及截止日期在今天之前且状态不等于 Completed 的情况,查询数据库中的 Tasks 表。LookupColumn 元素用于将用户名称作为对用户的个性化警告的一部分返回。
在代码中的此处,可以插入 Tasks 列表的其他视图,以返回并显示过期项目。
<SetList>Tasks</SetList>
<View>
<ViewFields>
<FieldRef Name="LinkTitle"/>
<FieldRef Name="Priority"/>
<FieldRef Name="Body"/>
<FieldRef Name="DueDate"/>
</ViewFields>
<Query>
<Where>
<And>
<And>
<Lt>
<FieldRef Name="DueDate"/>
<Value Type="DateTime">
<Today/>
</Value>
</Lt>
<Neq>
<FieldRef Name="Status"/>
<Value Type="Choice">Completed</Value>
</Neq>
</And>
<Eq>
<FieldRef Name="AssignedTo"/>
<Value Type="Integer">
<UserID/>
</Value>
</Eq>
</And>
</Where>
</Query>
<ViewHeader>
<HTML><![CDATA[<TABLE><TR>]]></HTML>
<Fields>
<HTML><![CDATA[<TH class="ms-vh">]]></HTML>
<Field/>
<HTML><![CDATA[</TH>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewHeader>
<ViewBody>
<HTML><![CDATA[<TR>]]></HTML>
<Fields>
<HTML><![CDATA[<TD class="ms-vb">]]></HTML>
<Field/>
<HTML><![CDATA[</TD>]]></HTML>
</Fields>
<HTML><![CDATA[</TR>]]></HTML>
</ViewBody>
<ViewFooter>
<HTML><![CDATA[</TABLE>]]></HTML>
</ViewFooter>
</View>
<HTML><![CDATA[</TD></TR></TABLE>]]></HTML>
</ViewBody>
这在当前用户具有过期任务的情况下,完成了外部框架视图的 ViewBody 部分。ViewEmpty 部分可用于包含另一个视图,此视图可将另一则消息传送给没有过期任务的当前用户。
<ViewEmpty>
<SetList>UserInfo</SetList>
<View>
<ViewFields>
<FieldRef Name="Title"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML>
<![CDATA[<TABLE><TR><TD class="NoOverdues">Hello ]]>
</HTML>
<Field Name="Title"/>
<HTML><![CDATA[, you have no past due items. Great work!</TD></TR></TABLE>]]></HTML>
</ViewBody>
</View>
</ViewEmpty>
</View>
</ows:XML>
通过将定义添加到 /_layouts/styles/ows.css(如下所示),可以为上述属性定义样式:
.Warning {
font-size: 14pt;
color: red;
font-weight: bold;
font-family: verdana;
}
.ResolveNow {
font-size: 12pt;
color: red;
text-decoration: underline;
font-family: verdana;
padding: 12px;
font-weight: bold;
}
.NoOverdues {
font-size: 12pt;
color: green;
font-family: verdana;
padding: 12px;
font-weight: bold;
}
下例在框架视图的 ViewEmpty 部分中嵌入一个视图,以便将另一消息显示给访问主页的当前用户(这取决于他们是否接受了名为 TeamSurvey 的调查)。如果他们已经接受了调查,则 ViewBody 部分将显示个性化的欢迎消息。如果未接受调查,则 ViewEmpty 部分将显示一则警告,并提供此调查的链接(为了适应 MSDN Web 布局的需要,此代码示例已经“被截断”):
<ows:XML>
<SetList>u_TeamSurvey</SetList>
<View>
<ViewFields>
<FieldRef Name="Author"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="Author"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML><![CDATA[<TABLE><TR><TD class="DidSurvey">Hello ]]></HTML>
<LookupColumn Name="Author" HTMLEncode="TRUE"/>
<HTML><![CDATA[, thanks for taking the
survey!</TD></TR></TABLE>]]></HTML>
</ViewBody>
<ViewEmpty>
<SetList>UserInfo</SetList>
<View>
<ViewFields>
<FieldRef Name="Title"/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML>
<![CDATA[<TABLE><TR><TD class="Warning">Hello ]]>
</HTML>
<Field Name="Title"/>
<HTML>
<![CDATA[, you have not yet taken the survey!
</TD></TR><TR><TD class="TakeNow">
<A href="http://[server_name]/[subweb_name]/Lists/
TeamSurvey/overview.htm">
Please take the survey immediately!</A>
</TD></TR></TABLE>]]></HTML>
</ViewBody>
</View>
</ViewEmpty>
</View>
</ows:XML>
您还可以将适当的样式定义添加到 ows.css 中。
.TakeNow {
font-size: 12pt;
color: red;
text-decoration: underline;
font-family: verdana;
padding: 12px;
font-weight: bold;
}
.DidSurvey {
font-size: 12pt;
color: green;
font-family: verdana;
padding: 12px;
font-weight: bold;
}
可以采取的更极端方法是让 ViewBody 部分作为空元素,并只使用 ViewEmpty 部分将用户重定向到此调查,而不让他们看到主页,如下所示:
<ows:XML>
<SetList>u_TeamSurvey</SetList>
<View>
<ViewFields/>
<Query>
<Where>
<Eq>
<FieldRef Name="Author"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody/>
<ViewEmpty>
<SetList>UserInfo</SetList>
<View>
<ViewFields/>
<Query>
<Where>
<Eq>
<FieldRef Name="ID"/>
<Value Type="Integer"><UserID/></Value>
</Eq>
</Where>
</Query>
<ViewBody>
<HTML><![CDATA[<Script>window.parent.location =
"http://[server_name]/[subweb_name]
/Lists/TeamSurvey/overview.htm";</Script>]]></HTML>
</ViewBody>
</View>
</ViewEmpty>
</View>
</ows:XML>
此处,ViewBody 部分只包含将调查的 URL 指定到 window.parent.location 的脚本块。
创建缩略图
您可以通过在 CAML 中嵌入 HTML 来创建包含图像的文档库的缩略图。下例假设存在一个名为 Image Gallery 的库,除了内置的 FileRef 和 Title 字段外,它还包含一个 Artist 字段。
<ows:xml>
<SetList>u_ImageGallery</SetList>
<HTML><![CDATA[<TABLE>]]></HTML>
<View Name="Image Gallery">
<ViewFields>
<FieldRef Name="FileRef"/>
<FieldRef Name="Title"/>
<FieldRef Name="Artist"/>
</ViewFields>
<ViewBody>
<HTML><![CDATA[<tr><td>]]></HTML>
<HTML><![CDATA[<a href="]]></HTML>
<HttpHost URLEncodeAsURL="TRUE"/>
<LookupColumn Name="FileRef"/>
<HTML><![CDATA["><img src="]]></HTML>
<HttpHost URLEncodeAsURL="TRUE"/>
<LookupColumn Name="FileRef"/>
<HTML><![CDATA[" width=50 height=50></a></td><td>]]></HTML>
<Field Name="Title"/>
<HTML><![CDATA[</td><td>]]></HTML>
<Field Name="Artist"/>
<HTML><![CDATA[</td></tr>]]></HTML>
</ViewBody>
</View>
<HTML><![CDATA[</TABLE>]]></HTML>
</ows:xml>
为图像文件的链接提供 URL 的 href 属性值是使用 CAML HttpHost 和 LookupColumn 元素构造的。LookupColumn 元素用于为列表的 FileRef 字段(即 DocMd 表中包含的图像文件 URL,它存储了服务器上所有站点的所有文档 URL)返回查找值。此视图中还显示了 Title 字段和 Artist 字段。
同一视图还可以与矢量标记语言 (VML) 集成来创建缩略图。您可以使用 CDATA 部分来构造 VML rect 和 imagedata 元素,以便两者均可以将图像显示为缩略图并提供图像文件的链接。
<ows:XML>
<SetList Scope="Request">u_ArtDocs</SetList>
<View Name="ThumbNailView">
<ViewFields>
<FieldRef Name="FileRef"/>
<FieldRef Name="Title"/>
<FieldRef Name="Artist"/>
</ViewFields>
<ViewHeader>
<HTML><![CDATA[<TABLE><TR><TD>]]></HTML>
</ViewHeader>
<ViewBody>
<HTML><![CDATA[<TABLE cellpadding=20><TR><TD>]]></HTML>
<HTML><![CDATA[<v:rect href="]]></HTML>
<HttpHost URLEncodeAsURL="TRUE"/>
<LookupColumn Name="FileRef"/>
<HTML><![CDATA[" style="HEIGHT: 50px; LEFT: 10px;
POSITION:relative; TOP:10px; WIDTH: 50px">
<v:imagedata src="]]></HTML>
<HttpHost URLEncodeAsURL="TRUE"/>
<LookupColumn Name="FileRef"/>
<HTML><![CDATA["/></v:rect>]]></HTML>
<HTML><![CDATA[</TD><TD class=ms-vb><BR>]]></HTML>
<Field Name="Title"/>
<HTML><![CDATA[<BR>]]></HTML>
<Field Name="Artist"/>
<HTML><![CDATA[</TD></TR></TABLE>]]></HTML>
</ViewBody>
<ViewFooter>
<HTML><![CDATA[</TD></TR></TABLE>]]></HTML>
</ViewFooter>
<Query/>
</View>
</ows:XML>
rect 元素的 href 值(它为图像文件的链接提供 URL)是使用 CAML HttpHost 和 LookupColumn 元素构造的。
页面中需要包括下面的处理说明,以便 VML 正常工作。
在写SharePoint查询XML字符串的时候要注意的一个问题
偶然在SharePointBlogs组里面看到的。
来源:MdP"s MOSS Blog
<And>和<Or>标签里面是不能同时套3个或更多比较标签的。
举例:
这么写是对的:
<And>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</And>
<Or>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</Or>
但这么写是错的:
<And>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
<Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</And>
<Or>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
<Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</Or>
那如果需要同时And多个怎么办?
这样:
<And>
<And>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</And>
<Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</And>
<Or>
<Or>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”ContentType”><Value Type=”Text”>Product</Value></Eq>
</Or>
<Eq><FieldRef Name=”Field1”><Value Type=”Text”>Value</Value></Eq>
</Or>
另外,Web部件管理器和事件处理程序管理器的英文版发布了:
http://www.colladec.com/en/default.aspx