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的專案。