Page Rendering Elements
CAML has two major types of elements — those for field rendering and schema definition, and those for page rendering. The page rendering CAML elements are designed for use in rendering pages, for instance, when you need to extract the property of a specific field and render it on a page.
SharePoint team Web site pages are rendered using a system similar to ASP script but with a different form of page markup. Since SharePoint Team Services from Microsoft is implemented as an ISAPI extension, the only page requests that can be dynamically rendered are those that go through the SharePoint Team Services DLL (owssvr.dll). A typical URL to the server would be:
http://Subweb1/_vti_bin/owssvr.dll?Using=Default.htm
The SharePoint Team Services DLL processes this request by first finding the file Default.htm in the root of the current Web site. It then scans this file from beginning to end looking for embedded CAML. As it finds each CAML element, it replaces it with corresponding output text in place in the page. A page that contains CAML XML is called a layout file.
In order for SharePoint Team Services to recognize CAML data islands, the outermost tag must include the ows: namespace prefix. For example:
<ows:Today/>
The above example will insert today’s date within the page.
Elements can be used in two different ways. Such elements as the Today element are used to directly generate a text string to be inserted within the page. Other elements are used to modify text generated by their child elements. For example:
<ows:URL>Link here</ows:URL>
The URL element modifies the text in the body by wrapping an <A> tag pointing to the current item around the text rendered by the body.
Elements can also be concatenated to produce a concatenation of their output. For example:
<ows:XML>
<Today/>
<UserID/>
</ows:XML>
The above example renders today’s date followed by the current user's ID.
The following table describes CAML page rendering elements.
Name | Description |
---|---|
Batch | Used for batch processing of commands within HTTP protocol. |
Case | Used inside a Switch statement to perform a comparison. |
Default | Contains the default value of a field to which new item forms are initialized. |
Expr | Contains a CAML expression that is evaluated to determine the course of action for a Switch statement. |
ForEach | Provides a basic mechanism for enumerating a collection of views or fields defined in the current list. |
GetVar | Returns a variable in the context of rendering the page. |
HTMLBase | Returns a string that sets the base element for the current page. |
HTTPHeader | Used to set one of the HTTP headers. |
HttpHost | Renders the URL to the virtual server containing the current team Web site. |
HttpPath | Returns the path to the appropriate OWSSVR.DLL. |
HttpVDir | Returns the root directory of the current subweb. |
IfEqual | Allows for conditional rendering based on the comparison of two CAML expressions. |
ListProperty | Returns the value of a specified column in the List of Lists table. |
Project | The top-level element in ONET.XML that defines a template for a new Web site based on SharePoint Team Services. |
ProjectProperty | Returns a global property of the current team Web site. |
Property | Returns the property from the current ForEach context. |
SetList | Designates which list is current. |
SetVar | Sets variables in the context of rendering the page. |
Switch | Allows for conditional rendering based on the value of a CAML expression. |
Today | Renders today’s date. |
View | Defines a SharePoint Team Services view. |
XML | Used as an outer wrapper to denote a CAML data island on the page. |