.. _ref-typevalue: Das Type-Value-Prinzip ====================== An vielen Stellen, wo im MAD-XML-Code Werte gesetzt werden müssen, geschieht dies nach dem Type-Value-Prinzip. Der häufigste Anwendungsfall für Type-Value-Angaben ist das Setzen von Widget-Properties. Da eine Widget-Property von einem festgelegten Typ ist, kann die ``type`` Angabe weggelassen werden. Ausnahmen sind in den Beschreibungen der Widget-Properties dokumentiert. Elemente, die nach dem Type-Value-Prinzip funktionieren, sind: * property * define * object * set Das Zuweisen von Werten kann auf dreierlei Art passieren: - mit einem ``type``- und einem ``value``-Attribut - mit einem ``lookup``-Attribut - mit einem Child-Element, das einen Wert repräsentiert **Zuweisung von Werten mit einem type- und einem value-Attribut** :: **Zuweisung von Werten mit einem lookup-Attribut** :: Der zu setzende Wert wird an anderer Stelle in der Presentation 'nachgeschlagen'. Die Syntax für Lookups ist im Abschnitt :ref:`ref-vars` beschrieben. Die folgende alternative Schreibweise nutzt das ``value``-Attribut für ein Lookup und ist gleichbedeutend: :: **Zuweisung von Werten als XML-Childnode** :: R 200,300 oder: :: Im ersten Fall wird die Wertangabe der Property genauso behandelt wie im ``value``-Attribut. Es darf kein zusätzliches ``value``-Attribut auf dem Property-Element geben. Im zweiten Fall wird als Wert einer Property ein Objekt vom Typ ``Shape`` zugewiesen. Neben ```` sind hier auch die komplexen Datentypen ````, ````, ```` und ```` erlaubt. ``type``- und ``value``-Attribute auf dem umschließenden Element sind nicht erlaubt. Weiteres Beispiel:: Die möglichen Typen und die Formate für die Wertangabe sind im Kapitel :ref:`ref-types` beschrieben. **Zuweisen von dynamischen Ausdrücken** Bei Elementen, die nach dem Type-Value-Prinzip funktionieren, ist auch die Zuweisung von Werten mit einer JavaScript-Funktion im ``value``-Attribut oder im XML-Tag möglich. In geschweifte Klammern ``{}`` wird der Body einer JavaScript-Funktion geschrieben. Lookups sind innerhalb einer so geschriebenen JavaScript-Funktion nicht möglich, wohl aber der Zugriff auf die Eigenschaften des umschließenden Widgets: Beispiele:: alternative Schreibweise: {return 4*4} {return Math.PI * this.Width}