Collaborative Application Markup Language
CAML (Collaborative Application Markup Language) ist eine auf XML basierende Auszeichnungssprache, die speziell für die SharePoint-Produkte (z. B. Microsoft SharePoint Foundation und Microsoft SharePoint Server) entwickelt wurde und für diese ausgelegt ist. CAML enthält Elemente zur Datendefinition und zur Abfrage und Anzeige von Daten in SharePoint-Portalen.

Elemente 
CAML ermöglicht es dem Entwickler, Inhalte in SharePoint-Portalen zu erstellen, zu verändern oder abzufragen, um diese dann nach eigenen Wünschen anzeigen zu lassen. Des Weiteren kann CAML für die Manipulation und Abfrage von Daten über externe Quellen (z. B. Anwendungen, welche das Client Object Model verwenden) benutzt werden.

Elemente zur Datendefinition 
Elemente zur Datendefinition können verwendet werden, um Listen und einzelne Sites zu erstellen.
Ein Beispiel für eine einfach gehaltene Definition von Listenelementen:

   <Fields>
     <Field Type="Counter" Name="ID"/>
     . . . weitere Definitionen. . .
   </Fields>

In CAML gibt es auch spezielle Tags, um Daten zu vergleichen und zu selektieren:

   <IfEqual>
      <Expr1>
         <Field Name="CheckedOutUserId" />
      </Expr1>
      <Expr2 />
      <Then />
      <Else>
        ''Weiteres CAML''
      </Else>
   </IfEqual>

Des Weiteren gibt es spezielle Tags für Datenbankabfragen.

Data Rendering-Elemente 
Mit Hilfe der neuen Tags ist es in CAML auch möglich, speziellen HTML-Code automatisch generieren zu lassen. Das folgende Beispiel zeigt eine Schleife, die Daten selektiert und im Anschluss ein mittels HTML implementiertes Dropdown-Menü mit diesen Daten anzeigt:

   <ForEach Select="CHOICES/CHOICE">
     <HTML>fld.AddChoice(</HTML>
     <ScriptQuote>
        <Property Select="."/>
     </ScriptQuote>
     <HTML>, </HTML>
     <ScriptQuote>
        <Property Select="Value"/>
     </ScriptQuote>
     <HTML>);</HTML>
   </ForEach>

Verwendung in SharePoint-Produkten 
Sämtliche XML-Dateien in SharePoint-Produkten basieren auf CAML. Die CAML-Dateien sind für Struktur der Sites und Listen essentiell. Sie beschreiben, welche Elemente auf den Seiten existieren können, während die ASPX-Dateien lediglich diese Elemente formatieren und anordnen.

CAML kann weiterhin von Software-Entwicklern für die Abfrage und Manipulation von SharePoint-Daten verwendet werden. So können einzelne Listen, Listenelemente sowie ganze Seiten abgefragt werden. Auch Kombinationen (und Schachtelung) solcher Abfragen sind möglich. Dazu stellt Microsoft eine SharePoint-API und das SharePoint Object Model zur Verfügung, zudem die seltener verwendeten SharePoint-WebServices.

Zur visuellen Erstellung von CAML-Abfragen dient das Tool U2U CAML.

Weblinks 
 CAML auf MSDN
 CAML Schema definition
 

XML-basierte Sprache
Microsoft