Parameter und ihre Werte

Möchte man mit einem set-Element Instanzen modifizieren, so gibt man (wie oben beschrieben) die betreffenden Parameter als Unterelemente an. Die Inhalte der Parameterelemente werden vom Content Management Server als die neuen Werte der Parameter interpretiert.

Greift man dagegen mit get (d. h. lesend) auf Instanzen zu, so müssen die Parameter-Elemente leer sein, weil der Content Management Server die Elementhierarchie im get-Element wie eine Schablone verarbeitet. Für jede mit dem where-Element ermittelte Instanz wird die Schablone mit den entsprechenden Werten ausgefüllt und in den Antwort-Request eingefügt. Dies wird im Abschnitt Requests als Schablonen und die Darstellung der Ergebnis-Daten erläutert.

Einfache und strukturierte Werte

Parameterwerte können - unabhängig davon, ob Sie sie setzen oder auslesen - einfache oder strukturierte Werte sein. Ein einfacher Wert ist eine Zeichenkette, ein strukturierter Wert ist eine Liste oder ein sogenanntes Dictionary. Während Zeichenkette ein gängiges Konzept ist, bedürfen Liste und Dictionary einer Erläuterung. Eine Liste ist eine geordnete Menge beliebig vieler Elemente. Jedes dieser Elemente wird durch ein listitem-Element dargestellt:

<cm-request ...>
  <attribute-where>
    <name>topics</name>
  </attribute-where>
  <attribute-addEnumValues>
    <listitem>books</listitem>
    <listitem>computing</listitem>
    <listitem>music</listitem>
  </attribute-addEnumValues>
</cm-request>

Im obigen Beispiel werden zum Feld topics (bei dem wir voraussetzen, dass es vom Typ enum oder multienum ist) die drei möglichen Werte books, computing und music hinzugefügt. Die Ordnung in einer solchen Liste ergibt sich aus der Reihenfolge der Listenelemente. Sie ist im Allgemeinen nicht relevant.

Ein Dictionary ist eine nicht geordnete Menge beliebig vieler Zuordnungen von Werten zu Namen. Jede Zuordnung wird durch ein dictitem-Unterelement repräsentiert, das wiederum aus einem Namen (key) und einem Wert (value) besteht:

<myDictionary>
  <dictitem>
    <key>name</key>
    <value>theName</value>
  </dictitem>
  <dictitem>
  ...
  </dictitem>
</myDictionary>

Dictionarys, die mit dictitem-Elementen strukturiert sind, kommen im XML-Interface recht selten (beispielsweise bei Zugriffen auf Benutzereinstellungen) vor. Die meisten Name-Wert-Paare werden in CRUL mit dem Namen als Elementname und dem Wert als Inhalt des Elements kodiert.

Der Wert eines Dictionary-Elements und eines Listenelements kann eine Zeichenkette oder wiederum eine Liste oder auch ein Dictionary sein.

Dimensionen von Werten

Im Content Management Server stehen manche Parameterwerte in mehreren Sprachen zur Verfügung. So haben beispielsweise Versionen sowohl ein allgemeines Attribut title als auch sprachspezifische Versionen dieses Attributs wie einen englischen Titel usw. Diese „Fähigkeit" einer Instanz, mehrere „Auslegungen" oder Versionen eines Parameters haben zu können, nennt man eine Dimension. Das Feld title einer Version oder Feldes, einer Vorlage und eines Workflows hat die Dimension Sprache. Auf die Dimension können Sie sich mit einem Tag-Attribut im entsprechenden XML-Tag beziehen.

Sprache ist zurzeit die einzige Parameter-Dimension im Content Manager. Sie steht bei den title- und helpText-Parametern der meisten Klassen zur Verfügung. Die Sprachdimension wird mit dem lang-Tag-Attribut kodiert:

<cm-request ...>
  <obj-where>
    <objClass>document</objClass>
  </obj-where>
  <obj-get>
    <title lang="en"/>
  </obj-get>
</cm-request>