Zum Inhalt springen

Collaborative Application Markup Language

aus Wikipedia, der freien Enzyklopädie

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

      | {{#ifeq: 20110722004657 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20110722004657}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20110722004657}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: U2U CAML Generator | {{#invoke:WLink|getEscapedTitle|U2U CAML Generator}} | {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20110722004657|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252}}
    || {{#if:  || }}
  }}{{#if: U2U CAML Generator
    | {{#if: {{#invoke:WLink|isBracketedLink|U2U CAML Generator}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252 }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}