CAML(Collaborative Application Markup Language) 早在2001年Sharepoint 2001 和 Team Service (WSS的第一个版本)就出现了。记得当时也算轰动一时,直到现在MOSS 2007还是依然健在,相比之下同时一起出来的PKM早已被OM取代,改的面目全非。当然现在开发MOSS2007.要么选择OM,要么选择web service。用到CAML的场景应该不多。
先来看看CAML的最简单的用法:
MOSS2007的基本配置如下:(全部是缺省值)
服务器名:devweb4
Site名:testcaml
List 名: mylist
View名:All Items
用visual studio 生成一个console application. 源码如下:
Imports Microsoft.SharePoint
Module Caml
Sub Main(ByVal args() As String)
Dim ServerName As String = args(0)
Dim SiteName As String = args(1)
Dim listName As String = args(2)
Dim viewName As String = args(3)
Dim site As SPSite = New SPSite(ServerName)
Dim web As SPWeb = site.OpenWeb(siteName)
Dim myList As SPList = web.Lists(listName)
Dim query As SPQuery = New SPQuery(myList.Views(viewName))
System.Diagnostics.Debug.WriteLine(query.ViewXml)
Console.WriteLine(query.ViewXml)
Console.ReadLine()
End Sub
End Module
四个参数分别是服务器名:devweb4,Site名:testcaml ,List 名: mylist ,View名:All Items。
运行命令:Caml “http://devweb4/” “testcaml” “mylist” “All Items”
得到以下结果 (一个XML)
<Query>
<OrderBy>
<FieldRef Name="ID" />
</OrderBy>
</Query>
<ViewFields>
<FieldRef Name="Attachments" />
<FieldRef Name="LinkTitle" />
</ViewFields>
<RowLimit>100</RowLimit>
</View>
如果为“All Items” (View)选择更多的field, 就会有更多<FieldRef Name="<field name>" />出现。
上面的xml构成了CAML检索的基础
下面是一个典型的检索
<Query>
<OrderBy>
<FieldRef Name=”Title” />
</OrderBy>
<Where>
<Lt>
<FieldRef Name=”StartDate” />
<Value Type=”DateTime”>2007-01-01T00:00:00Z</Value>
</Lt>
</Where>
</Query>
以Title为序,检索所有的startdate小于2007/01/01的项目。