<\body> <\tmdoc-title> Daten-Beschreibungen (D.R.D.) (data relation descriptions) s> Einer der Hauptvorteile von ist die Verwendung von Baumstrukturen als allgemeines Datenformat des Editors. Wie bei XML hat dies den Vorteil, dass diese Strukturen übersichtlich und leicht verständlich sind, sodass es einfach ist, Dokumente mit den eingebauten Werkzeugen zu ändern und anzupassen. Wenn jedoch der Editor für einen ganz bestimmten, besonderen Zweck eingesetzt werden soll, dann muss in aller Regel das Datenformat auf eine bestimmte Teilmenge der möglichen Bäume beschränkt werden. In XML benutzt man Data Type Definitions (s), um eine spezielle Teilmenge des allgemeinen XML-Formats für einen bestimmten Zweck zu definieren: für Web-Dokumente \RXHTML``, für Mathematik \RMathML``, für 2-dimensionale Graphik \RSVG`` usw.. Auÿerdem erlaubt XML, solche s in einem gewissen Umfang miteinander zu kombinieren. Schlieÿlich enthalten s. normalerweise ein Referenz-Handbuch. In sind wir mit der Einführung von s noch einen Schritt weiter gegangen. Neben der Entscheidung, ob ein gegebenes Dokument syntaktisch korrekt ist, können wir damit auch formal bestimmte Eigenschaften des Dokuments beschreiben. Beispielsweise können Textfragmente erreichbar () sein oder eben nicht. So ist typischerweise der Zähler in einem Bruch erreichbar und kann daher jederzeit im Editor geändert werden, während beispielsweise die URL eines Hyperlinks nicht erreichbar ist und daher erst nach Aufhebung des Schutzes veränderbar wird. Ganz ähnlich implizieren bestimmte Konstrukte wie z.B. Blockinhalte, während andere wie z.B. Zeileninhalt impliziert. Schlieÿlich verhalten sich bestimmte verwandte Konstrukte wie , , , bei bestimmten Operationen wie z.B. Konversionen gleichartig. Eine Daten-Beschreibung () besteht aus einer \RData Type Definition`` und zusätzlichen logischen Eigenschaften von Marken, Konstrukten und Textfragmenten. Diese logischen Eigenschaften werden in sogenannten definiert, die auch in anderen Programmiersprachen wie z.B. Prolog Verwendung finden. Es sollte damit relativ leicht sein, die Eigenschaften von Marken, Konstrukten und Textfragmenten zu bestimmen, so dass bestimmte Datenbanktechniken zur effektiven Implementierung genutzt werden können. Momentan haben wir damit gerade erst begonnen und benutzen zur Zeit noch eine Menge C++ Code im Widerspruch zu dem, was wir oben beschrieben haben. Daher können wir eine bessere formale Beschreibung von s jetzt noch nicht liefern. Einer der wichtigsten Vorteile von s ist, dass anders als in objektorientierten Sprachen keine festen hierarchischen Strukturen vorgegeben werden müssen. Das ist deshalb so nützlich, weil Eigenschaften wie Veränderbarkeit (accessability), Blockinhalt, Zeileninhalt von einander unabhängig sind. Es ist in der Tat so, dass s meist zur Beschreibung passiver Dokumente ausreichend sind, dass aber, wenn es darum geht, Dokumente interaktiv zu editieren, eine feinere Beschreibung von Eigenschaften günstiger ist. s> Derzeit enthält die eines Dokuments die folgenden Informationen: <\itemize> Die erlaubten Anzahlen von Variablen (arity). Die Erreichbarkeit (accessability) eines Konstrukts und seiner Kinder. In nächster Zukunft sollen die folgenden Eigenschaften eingeführt werden: <\itemize> Ist_Zeileninhalt (inline-ness) eines Konstrukts und seiner Kinder. Ist_Tabelle (tabular-ness) eines Konstrukts und seiner Kinder.\ Zweck eines Konstrukts und seiner Kinder. Diese Informationen werden neben anderen für folgende Aktionen verwandt: <\itemize> Natürliches Vorgabeverhalten, wenn Konstrukte oder ihre Kinder erzeugt oder vernichtet werden, z.B. automatische Ergänzung von fehlenden Argumenten und/oder Löschung von Konstrukten mit zu geringer Argumentanzahl.\ Beschränke Suchoperationen auf erreichbare Knoten z.B. bei der Rechtschreibprüfung. Automatische Einfügung der Konstrukte bzw. , wenn Blöcke oder Tabellen erzeugt werden. Syntaktische Hervorhebungen im Quellmodus in Abhängigkeit von dem Zweck des Konstrukts und seiner Argumente. ) eines Dokuments> erzeugt für jedes Dokument eine eigene Daten-Beschreibung, . Diese wird in zwei Stufen erzeugt. Zunächst versucht heuristisch die Eigenschaften von Konstrukten, die der Benutzer definiert hat, und die Konstrukte von assoziierten Stildefinitionen auszuwerten. Ist zum Beispiel folgendes Makro\ <\tm-fragment> !>>> vorhanden, dann erkennt automatisch, dass ein Makro mit einem Argument ist, und nimmt an, dass die zulässige Argumentanzahl 1 ist. Beachten Sie, dass die heuristische Erzeugung der Daten-Beschreibung interaktiv ist. Wenn Sie ein Makro in Ihrem Dokument erzeugen, werden seine Eigenschaften automatisch in die Daten-Beschreibung aufgenommen, sofern Sie dafür etwas Zeit lassen (ca. 1 s). Manchmal sind die heuristisch definierten Eigenschaften nicht zutreffend. Für diesen Fall besitzt das Konstrukt , mit der eine dieser Eigenschaften durchgeführt werden kann. <\initial> <\collection>