Elemente für einfache und strukturierte Werte

Die Eingabe- oder Rückgabewerte in CRUL-Payloads können einfache oder strukturierte Werte sein. Ein einfacher Wert ist eine Zeichenkette; eine Liste oder ein Dictionary ist jeweils ein strukturierter Wert (siehe Parameter und ihre Werte).

Eine Zeichenkette wird in Payloads zwischen dem Start- und dem Ende-Tag eines Elements angegeben. Die Werte einer Liste werden jeweils zwischen dem listitem-Start-Tag und dem listitem-Ende-Tag eingetragen, wenn der Wert eine Zeichenkette ist. Ist der Listenwert wieder eine Liste oder ein Dictionary, so wird zwischen dem Start- und dem Ende-Tag eine weitere Liste oder ein Dictionary angegeben.

Ein Dictionary-Eintrag enthält dagegen immer Unterelemente. Das bedeutet, dass zwischen dem dictitem-Start- und dem dictitem-Ende-Tag keine Zeichenkette enthalten sein kann, sondern Unterelemente angegeben werden müssen, wobei diese wiederum eine Zeichenkette enthalten können. Listen und Dictionaries können beliebig oft ineinander verschachtelt werden.

Zeichenkette (#PCDATA)
Bedeutung: Der Eingabe- oder Rückgabewert ist eine Zeichenkette, also ein string, eine Zahl (number), ein Datum mit oder ohne Uhrzeit (datetime), ein logischer Wert (bool) oder eine leere Zeichenkette (void).

Definition:

<!ENTITY % cm.atom "#PCDATA">
<!ELEMENT elementName (&cm.atom;)>

wird in der Referenz ersetzt durch:

<!ELEMENT elementName (#PCDATA)>

Beispiel:

<attribute-create>
  <name>Auswahl</name>
  <type>enum</type>
</attribute-create>
Liste (listitem)
Bedeutung: Eine Liste ist eine geordnete Menge beliebig vieler Elemente. Jedes Element wird durch ein listitem-Element dargestellt. Die Ordnung der Listenelemente ergibt sich aus ihrer Reihenfolge. Der Wert eines listitem-Elements kann wiederum eine Liste oder ein Dictionary sein.

Definition:

<!ENTITY % cm.atom "#PCDATA">
<!ENTITY % cm.dictitem "dictitem">
<!ENTITY % cm.listitem "listitem">
<!ELEMENT listitem (%cm.atom; | %cm.listitem; | %cm.dictitem;)*>
<!ELEMENT dictitem (key, value)>
<!ELEMENT key (%cm.atom;)>
<!ELEMENT value (%cm.atom; | %cm.listitem; | %cm.dictitem;)*>

wird in der Referenz ersetzt durch:

<!ELEMENT listitem (#PCDATA | listitem | dictitem)*>
<!ELEMENT dictitem (key, value)>
<!ELEMENT key (#PCDATA)>
<!ELEMENT value (#PCDATA | listitem | dictitem)*>

Beispiel:

<attribute-addEnumValues>
  <listitem>books</listitem>
  <listitem>music</listitem>
</attribute-addEnumValues>
Dictionary (dictitem)
Bedeutung: Ein Dictionary ist eine nicht geordnete Menge beliebig vieler Zuordnungen von Werten zu Namen (Bezeichnern). Jede Zuordnung wird durch ein dictitem-Element (engl. "dictionary item") repräsentiert, das wiederum aus einem Namen (key) und einem Wert (value) besteht. Der Wert eines dictitem-Elements kann eine Liste oder auch ein Dictionary sein.

Definition:

<!ENTITY % cm.atom "#PCDATA">
<!ENTITY % cm.dictitem "dictitem">
<!ENTITY % cm.listitem "listitem">
<!ELEMENT dictitem (key, value)>
<!ELEMENT key (%cm.atom;)>
<!ELEMENT value (%cm.atom; | %cm.listitem; | %cm.dictitem;)*>

wird in der Referenz ersetzt durch:

<!ELEMENT dictitem (key, value)>
<!ELEMENT key (#PCDATA)>
<!ELEMENT value (#PCDATA | listitem | dictitem)*>

Beispiel:

<dictitem> 
  <key>type</key> 
  <value>enum</value> 
</dictitem>
<dictitem> 
  <key>values</key> 
  <value>
    <listitem>SWEET</listitem>
    <listitem>SALTY</listitem>
  </value> 
</dictitem>