CAML簡介 (原贴:http://blog.163.com/szmax_limin/blog/static/58182861200931142325680/)
一、CAML簡介:
全稱:協作應用程序標記語言
用於在WSS中定義在網站和列表中使用的字段和視圖,還用於在網站設置過程中定義WSS數據庫中的表
二、CAML的作用:
1. 使用CAML自定義網站
2. 使用CAML進行呈現
CAML用於WSS中兩種類型的呈現:
A. 定義字段中包含的數據的類型(數據定義元素)
B. 構造瀏覽器中顯示的HTML(HTML呈現元素)
CAML有兩種類型的元素:
A. 用於字段呈現與架構定義的元素
B. 用於頁呈現的元素
3. 使用CAML進行編程
Ø 創建自定義網站定義和配置
Ø 使用網站定義配置
Ø 設置文件
Ø 創建簡單功能
Ø 自定義Delegate控件
Ø 向用戶界面添加操作
Ø 創建事件處理程序功能
Ø 創建自定義列表定義
Ø 自定義Sharepoint網站的徽標
Ø 向網站定義中添加文檔模板、文件類型和編輯應用程序
Ø 創建解決方案
Ø 向列表添加內容類型
Ø 向網站添加內容類型
Ø 部署工作流模板
Ø 向列表添加列
Ø 引用內容類型中的列
Ø 自定義字段類型定義
三、數據定義元素:
CAML字段呈現元素在呈現單個字段時使用,這些字段可顯示在字段類型定義(12\TEMPLATES\XML\FldTypes?.xml)中
每一個字段的定義都由兩個部份組成:
a. 字段定義部份
<Field >內容</Field>
Name值說明:
Ø AllowBaseTypeRendering:默认值为 FALSE。設置為True表示該字段在顯示時如果出錯就顯示成父類型
Ø TypeName:字段類型名稱
Ø ParentType:父類的名稱
Ø TypeDisplayName:顯示名稱(是指在列表设置页面中显示的名称)
Ø TypeShortDescription:簡短說明(则是在创建栏页面中显示的名称)
Ø Filterable:此字段是否可用於使用此字段的列表中進行篩選
Ø Sortable:是否可以在使用了此字段的列表中對此字段進行排序
Ø ShowOnListAuthoringPages:是否在列表中顯示此字段
Ø ShowOnDocumentLibraryAuthoringPages:是否在文檔庫中顯示此字段
Ø ShowOnSurveyAuthoringPages:是否在調查列表中顯示此字段
Ø ShowOnColumnTemplateAuthoringPages:是否為列模板字段
Ø FieldTypeClass:該字段的程序集名稱
Ø FieldEditorUserControl:指定自定義的字段編輯屬性控件(field_typeFieldEditor.ascx)地址,如果不存在該元素,则字段类型的特定属性将由 PropertySchema 元素(字段类型)元素呈现。
Ø InternalType:表示一个内部基本类型,不要在自定义字段类型定义中使用此元素
Ø SQLType:表示将用于在内容数据库中存储数据的SQL数据类型,不要在自定义字段类型定义中使用此元素
b. 字段呈現部分
<RenderPattern >
</RenderPattern>
Name值說明:
Ø HeaderPattern:定義列標題在列表視圖頁面上的呈現定
Ø DisplayPattern:定義字段在”視圖”(列表項)表單和列表視圖頁面上的呈現模式(DispForm.aspx與AllItems.aspx頁面上的呈現模式)
Ø EditPattern:定義字段在EditFrom.aspx頁面上的呈現模式
Ø NewPattern:定義字段在NewForm.aspx頁面上的呈現模式
Ø 其它三個基本上用不到,這里就不列出來了
可使用的CAML元素:
Ø Column:返回特定字段的原始数据值
Ø Column2:用于呈现链接字段类型
Ø Escape:用于转义字符串中的特定字符
Ø FieldFilterOptions:用于 FldTypes.xml 的 HeaderPattern 部分中,以显示筛选器下拉菜单
Ø FieldRef:用于计算字段以引用构成字段,还用于视图中以定义存在哪些字段
Ø FieldSortImageURL:返回指向用于指示如何对列进行排序的图像文件的 URL
Ø FieldSortParams:返回列表的排序方向,基于是否已排序字段以及当前默认排序方向来呈现 Asc 或 Desc
Ø IfEqual:允许基于两个 CAML 表达式的比较结果进行条件呈现
Ø IfNew:如果项被视为新项,则返回 TRUE
Ø ImagesPath:返回项目的图像目录的 HTTP 路径
Ø Limit:将文本截断为指定大小
Ø LocaleInfo:将服务器区域设置信息传输到客户端,以便正确显示和编辑日期和数字
Ø PageUrl:用于任何位置,以返回当前页的绝对、编码的 URL
Ø Property:从当前 ForEach 上下文返回属性
Ø ScriptQuote:用于从服务器呈现必须解释为引用字符串的文本
Ø TodayISO:以 ISO 格式呈现当前日期和时间
c. 字段屬性設置部分(在未指定FieldEditorUserControl時使用)
<PropertySchema>
<Fields>
<Field DisplayName="desc" DisplaySize="30" Type="Text">
<Default></Default>
</Field>
</Fields>
</PropertySchema>
四、HTML呈現元素
頁面呈現CAML元素用於呈現頁面,如需要提取特定字段的屬性並將其呈現在面面上時
名称 |
说明 |
用于批处理 HTTP 协议中的命令。 | |
用于在 Switch 或 FieldSwitch 语句内执行比较。 | |
包含将新的项目表单初始化为的字段的默认值。 | |
包含一个 CAML 表达式,计算该表达式以确定 Switch 或 FieldSwitch 语句的操作过程。 | |
基于 CAML 表达式的值提供条件呈现。 | |
提供一个用于枚举当前列表中定义的视图或字段的集合的基本机制。 | |
在呈现页面的上下文中返回一个变量。 | |
返回一个为当前页面设置基元素的字符串。 | |
呈现包含当前网站的虚拟服务器的 URL。 | |
返回适当的 OWSSVR.DLL 的路径。 | |
返回当前网站的根目录。 | |
允许基于两个 CAML 表达式的比较结果进行条件呈现。 | |
从数据库返回指定列的值。 | |
呈现当前时间。 | |
Onet.xml 中的顶级元素。 | |
返回当前工作组网站的全局属性。 | |
从当前 ForEach 上下文返回属性。 | |
指定当前列表。 | |
在呈现页面的上下文中设置变量。 | |
允许基于 CAML 表达式的值的条件呈现。 | |
呈现当前日期。 | |
呈现一个 URL。 | |
在 Windows SharePoint Services 中定义视图。 | |
用作外部包装以表示 CAML 的一节。 |
五、CAML查詢架構
用來定義對列表數據的查詢
參考:http://msdn.microsoft.com/zh-cn/library/ms467521.aspx
六、CAML視圖架構
用來定義列表視圖在WSS中的呈現方式
參考:http://msdn.microsoft.com/zh-cn/library/ms439798.aspx
七、CAML List架構
用來定義創建列表的元數據
參考:http://msdn.microsoft.com/zh-cn/library/aa543477.aspx
八、CAML網站架構
用來定義創建網站集或網站的元數據。
网站定义指定导航栏、列表模板、文档模板、列表基本类型、配置、模块、
组件和服务器电子邮件页脚,以创建网站。
參考:http://msdn.microsoft.com/zh-cn/library/aa544502.aspx
九、文檔圖標架構
在DocIcon.xml文件中使用文檔圖標架構可將文件擴展名和ProgID映射到相磁圖標
參考:http://msdn.microsoft.com/zh-cn/library/aa979708.aspx
十、其它架構
Ø 内容类型定义架构
Ø 功能架构
Ø 自定义字段类型定义
Ø Solution 架构
Ø 升级定义架构
Ø 工作流程定义架构