Amaya - Der Webclient des W3C

Thomas Riehn

Was ist Amaya

Einführung

Amaya ist ein Browser/Editor der es ermöglicht, Dokumente im Web zu veröffentlichen. Browser und Editor sind bei Amaya integriert, da das Erstellen von Web-Seiten und das Überprüfen der daraufenthaltenen Links nicht voneinander zu trennen sind. Amaya wird häufig verwendet, um die neuen Entwicklungen in den Web-Protokollen und in den Datenformaten darzustellen und zu testen. Von Amaya stehen Binaries für Unix- und Windows-Plattformen, sowie deren Source-Code zum Download bereit.

Amaya ist ein Open Source Projekt, das vom W3C gehostet wird. Dem Kernentwickler-Team gehören Irène Vatton, José Kahan, Laurent Carcone und Vincent Quint an. Mit Hilfe von Amaya kann man (X)HTML-Seiten erstellen und sehr einfach mathematische Ausdrücke (MathML) und kleine SVG-Grafiken einbinden. Das Design der Seiten kann man über Cascading Style Sheets verändern. Außerdem lassen sich die HTML-, XHTML-, MathML- und SVG-Dokumente auf lokalen und entfernten Servern über HTTP publizieren. Zusätzlich unterstützt Amaya Standard-XML, d.h. er stellt den Inhalt von XML-Dokumenten dar und erlaubt es, XML mit einem CSS Style Sheet zu verknüpfen.

Man kann mit Hilfe von Amaya sehr einfach den Text einer Web-Seite verändern: hierfür muß man lediglich in das Fenster an die gewünschte Stelle klicken und einfach den Text eingeben. Möchte man einem Link folgen, muß man doppelt auf diesen klicken. Das Programm ist über das Menü für den Benutzer frei konfigurierbar. Amaya besitzt ein "WYSIWYG"-Frontend, ähnlich dem anderer Web-Browser wie Netscape, Opera oder dem Internet Explorer. Mit dieser Schnittstelle können Benutzer leicht HTML- und XHTML-Seiten erzeugen, sowie CSS Style Sheets, MathML-Ausdrücke und SVG-Zeichnungen einbetten. Eine vollständige Unterstützung von SVG ist derzeit noch nicht vorhanden. Amaya umfaßt eine Anmerkungsanwendung (wird im Annotea Projekt entwickelt), die auf RDF, XLink und XPointer basiert.

Amaya hat ein Gegenstück namens Jigsaw, welches eine ähnliche Rolle auf der Server-Seite spielt. Ein wesentlicher Vorteil von Amaya liegt darin begründet, daß er die W3C Spezifikationen strikt implementiert. D.h. daß Web-Autoren mit Hilfe von Amaya überprüfen können, ob Sie einen syntaktisch einwandfreien Code erstellen, der einfach zu warten und leicht für andere Ausgabegeräte anzupassen ist.

Funktionen von Amaya

Screen shot of Amaya's main                                                                                                         view

Abb.1: Hauptfenster von Amaya

Das Bild oben zeigt das Hauptfenster von Amaya. In der Symbolleiste am oberen Rand dienen einige der Buttons dem Editieren von Dokumenten. Der Benutzer kann einen Teil des Dokumentes selektieren und ihm einen HTML-Typ (H1, LI, EM, etc.) über den Menüpunkt "Types" oder über den dazugehörigen Button in der Symbolleiste zuweisen. Dadurch wird der selektierte Teil in ein Element vom gewählten Typ umgewandelt.

Verwendete Standards bei Amaya

HTTP Protokoll

Amaya stellt Verbindungen zu Remoteservern mittels HTTP/1.1 her. Eine Implementierung dieses Protokolls wird vom W3C durch die libwww zur Verfügung gestellt.

HTML

Amaya verarbeitet Dokumente, die sich strikt an die Document Type Definitions halten. Als Editor erstellt Amaya einen DTD-konformen Code. Es werden HTML 4.01 Dokumente, wie auch Dokumente vom Typ XHTML-1.0 (Transitional, Strict oder Basic) und XHTML-1.1 unterstützt. Die Menüs von Amaya passen sich dynamisch dem gewählten Dokumententyp an.

CSS

Amaya bietet Unterstützung für die W3C Style Sheet Sprache CSS, obgleich er diese noch nicht vollständig unterstützt (Aktuelle Unterstützung der CSS Implementierung). Ein einfach zu verwendendes Frontend ermöglicht es dem Benutzer Style Sheets für Web-Dokumente zu erstellen. Es ist möglich Texte einzufärben, Schriftarten zu wechseln, Hintergrundfarben zu setzen und andere Darstellungselemente zu verändern. CSS Style Sheets können auch dazu benutzt werden, das Aussehen von XML Dokumenten zu verändern.

MathML

Amaya enthält eine Implementierung von MathML, das Benutzern erlaubt, Web-Seiten anzusehen und zu editieren, die mathematische Ausdrücke enthalten (einige Beispiele). Wie der Rest des Dokumentes, werden diese Ausdrücke durch eine WYSIWYG-Schnittstelle editiert. Amaya benutzt Namespaces, um Ausdrücke MathML innerhalb der XHTML-Dokumente zu integrieren.

Screen shot of                                                                                         Amaya's                 Math

Abb.2: Strukturdarstellung von Amaya

Dieser Screenshot ist eine Demonstration von MathML, einer XML-Anwendung. MathML erlaubt es, mathematische Gleichungen für das Veröffentlichen in dem World Wide Web zu formatieren. Mit Amaya kann ein Autor die formatierte Ansicht und die Struktur gleichzeitig ansehen.

SVG

Amaya unterstützt graphische Darstellungen einschließlich dem png-Format, das leistungsfähigerer als GIF ist. Das Programm verwendet auch eine Teilmenge der Scalable Vector Graphics (SVG), nämlich die grundlegende Formen, Texte, Bilder und sog. "foreignObjects" (letztere sind nützlich, um HTML-Fragmente oder MathML-Ausdrücke in den Zeichnungen einzubetten). Die Grafiken werden in XML geschrieben und können mit HTML und MathML frei gemischt werden.

RDF und XPointer

Amaya umfaßt eine Anmerkungsanwendung, die auf RDF, XLink und XPointer basiert. Vom technischen Gesichtspunkt werden Anmerkungen normalerweise als Metadaten gesehen, da sie zusätzliche Informationen zu vorhandenen Daten geben. In Amaya wird ein spezielles RDF Anmerkungs-Schema zum Beschreiben von Anmerkungen verwendet. Anmerkungen können auf einem oder mehren Anmerkungsservern lokal oder entfernt gespeichert werden. Wenn ein Dokument betrachtet wird, bittet Amaya jeden dieser Server um die Anmerkungen, die zu diesem Dokument gemacht wurden. Amaya verwendet XPointer um festzulegen, wo eine Anmerkung zu einem Dokument angebracht werden soll. Mit dieser Technik ist es möglich, jedes mögliche Web-Dokument zu kommentieren, ohne es editieren zu müssen. Amaya stellt Anmerkungen mit einem kleinen Bleistift  Anmerkungsbleistiftikone dar und verknüpft damit XLink-Attribute. Klickt der Benutzer einmal auf den Bleistift, wird der kommentierte Text hervorgehoben. Klickt der Benutzer doppelt auf den Bleistift, wird der Anmerkungstext und andere Metadaten in einem eigenen Fenster dargestellt.

Internationalisierung

Benutzer können bei Amaya die Dialogsprache über das Konfigurationsmenü wählen (zur Zeit stehen die Sprachen Englisch, Deutsch, Französisch, Spanisch, Portugiesisch und Italienisch zur Verfügung). Andere Sprachen können ohne neukompilieren der Anwendung durch den Benutzer hinzugefügt werden. Amaya unterstützt Unicode kodierte Dokumente, bidirektionales Schreiben und multilinguale Dokumente.

XLink

Einfache unidirektionale Hyperlinks sind in HTML durch die sog. Anker implementiert. XML Linking Language (XLink) wird dazu benutzt, unidirektionale Hyperlinks bei MathML- oder SVG-Elementen zu implementieren.

XML

Mit Hilfe von Amaya kann der Benutzer Dokumente in den XML-Sprachen XHTML, MathML und SVG erstellen. Darüberhinaus kann ein Benutzer mit Amaya jedes beliebige XML-Dokument lesen und mit Hilfe von CSS Style Sheets formatiert darstellen.

Ausblick

Die Erfolge in Bezug auf XML sollen bei Amaya weiter ausgebaut werden, insbesondere das Editieren generischer XML-Dokumente und das Verknüpfen dieser mit CSS Style Sheets. Außerdem soll die Implementierung von Unicode abgeschlossen werden.

Gleichzeitig wird die Unterstützung von SVG weiter ausgebaut. Dies wird zur Folge haben, daß zukünftige Versionen von Amaya noch mehr Funktionen von SVG unterstützen werden, wie auch ein verbessertes Rendering und ein komfortableres User-Interface für den Editor.

Architektur von Amaya

Die Rolle von Amaya als Testumgebung schlägt sich auch in dem internen Design nieder. Die Software-Architektur erlaubt es, Amaya leicht zu erweitern. Mehrere APIs und Mechanismen ermöglichen es, die Funktionalität zu ändern und zu erweitern mit einem Minimum an Änderungen im Source-Code.

Um Dokumente strukturiert verarbeiten zu können, wurde Amaya als Anwendung auf das Thot Toolkit aufgesetzt. Thot ist eine Sammlung von Programmbibliotheken, die Dokument-Editierfunktionen bereitstellen. Es basiert auf einem strukturierten Dokumentenmodell, welches Inhalt, Struktur und Darstellung eines Dokumentes klar voneinander trennt.

Die Sprachkomponenten von Thot

Jede Editierungs- und Formatierungsfunktion in Thot bezieht sich auf die logische Dokumentenstruktur. Bei jeder Applikation, die auf Thot basiert, ist das Dokument intern als Baum aufgebaut. Dieser ordnet die Typelemente wie Überschriften, Abschnitte oder Listen in die Baumstruktur ein. Diese Elemente können darüberhinaus Attribute besitzen, die mehr Informationen über die Rolle der Elemente in der Dokumentenstruktur liefern; genau wie in HTML und SGML.

Thot liefert vier Sprachen, die dazu verwendet werden um vier Schematypen bereitzustellen. Ein Schema ist eine Zusammenfassung von Regeln, die das Verhalten des Editors in Bezug auf die logische Stuktur der Dokumente, deren Darstellung, deren externe Syntax oder andere spezielle Verfahrensweisen festlegen.

Logische Strukturen: Sprache S

Die logische Struktur eines Dokumentes ist von bestimmten Regeln beschränkt. Strukturregeln spezifizieren die verfügbaren Elementtypen und deren Attribute. Sie zeigen an wie diese Elemente miteinander verknüpft werden müssen, um eine valide Dokumentenstruktur zu erhalten und sie legen fest, welche Attribute bei jedem einzelnen Elementtyp gesetzt werden können. In Thot sind die Strukturregeln in einem Strukturschema zusammengefasst. Ein Strukturschema legt die logische Struktur eines Dokumententyps fest; es ist geschrieben in einer einfachen, deklarativen Sprache namens S.

Amaya benutzt das Strukturschema, um die logische Struktur von HTML-Dokumenten festzulegen. Dieses Schema ist äquivalent zu der HTML-DTD.

Dokumenten Darstellung: Sprache P

Das Aussehen eines Dokumentes kann man über ein Darstellungsschema verändern, das in der Sprache P geschrieben ist. Ein Darstellungschema spezifiziert die sog. Views die den Benutzern vorgeschlagen werden und legt in den Darstellungsregeln fest, wie die Elemente und Attribute in den Views dargestellt werden sollen.

Amaya benutzt mehrere verschiedene Darstellungsschemata, die das unterschiedliche Layout für HTML-Dokumente festlegen: eines für Farbmonitore, eines für Drucker. Diese Schemata legen das Design der HTML-Dokumente fest, sofern dieses nicht über Style-Definitionen verändert wird. Wird hierzu CSS verwendet, werden diese Schemata dynamisch um Darstellungsregeln erweitert,die mit den CSS-Regeln korrespondieren, welche im Dokument definiert sind.

Externer Syntax: Sprache T

Ein Strukturschema spezifiziert lediglich die interne logische Struktur eines Dokumentes, aber nicht dessen externe Syntax. Dieselbe Struktur kann in verschiedene Syntaxe übertragen werden, die auch bei der Speicherung des Dokumentes berücksichtig werden. Die Ausgabesyntax wird definiert durch ein Übersetzungsschema, welches in der Sprache T geschrieben ist. Auch diese Sprache ist deklarativ. Sie spezifiziert, wie jedes Element und Attribut des Strukturschematas extern dargestellt werden soll.

Ein Übersetzungschema wird in Amaya dazu verwendet, die HTML-Syntax zu definieren. Andere Schemata stehen zur Verfügung für das Speichern eines Dokumentes in ASCII oder LaTeX.

Anwendungskonstrukt: Sprache A

Die vierte Sprache von Thot ist die Sprache A. Sie wird dazu benutzt, die Benutzerschnittstelle, wie auch die spezifischen Kommandos zum Editieren bereitzustellen. Mit einem in der Sprache A geschriebenen Anwendungsschema legt der Entwickler die Menüzeile, die Symbolzeile, den Inhalt der Pull-Down-Menüs und die Funktionen fest, die aus dem Menü heraus aufgerufen werden. Darüberhinaus kann man in dem Anwendungsschema die von Thot bereitgestellten Editierfunktionen verändern oder erweitern.

Amaya ist eine Thot-Anwendung die in der Sprache A geschrieben wurde. Sie benutzt die einfachen Editierfunktionen von Thot und erweiterte diese um spezielle Kommandos, die für das Web und HTML spezifisch sind.

Jede der vier Sprachen von Thot hat einen eigenen Compiler. Die Compiler für die Sprachen S, P und T generieren Dateien, die dynamisch von der Thot-Bibliothek zur Laufzeit eingebunden werden. Der A-Compiler hingegen generiert C-Code, der zusammen mit den Anwendungsbibliotheken von Amaya kompiliert und gelinkt werden muß.

Thot Bibliotheken

Funktionen zum Ändern von Dokumenten

Alle Funktionen zum Editieren von Dokumenten basieren auf den vier bereits bekannten Schemata. Beispielsweise ruft eine Anwendung nur zwei Funktionen auf (NewTree und InsertTree), um einen neuen Teilbaum in die Dokumentenstruktur einzuhängen. Die Funktion NewTree erhält als Parameter den Element-Typ den das Wurzelelement des neuen Teilbaumes haben soll und gemäß dem Strukturschema erstellt es alle benötigten Elemente für den Teilbaum. Die Funktion InsertTree benutzt das Strukturschema, um zu prüfen, ob der Teilbaum an der gewünschten Postition innerhalb der Dokumentenstruktur eingefügt werden kann und benutzt das Darstellungsschema, um die notwendigen Teile in allen Sichten neu darzustellen. Der Programmierer muß sich somit nur mit der logischen Dokumentenstruktur befassen, der Rest wird ihm von Thot abgenommen. Aus diesem Grund ist das Erstellen einer Anwendung sehr einfach.

Thot liefert zur Sprache A eine Bibliothek für das Erstellen grafischer Benutzeroberflächen, mit deren Hilfe es sehr einfach ist, eine Oberfläche zu entwickeln.

Erweiterungsmechanismen

In Thot sind bereits eine Reihe von Standard-Editierfunktionen implementiert, jedoch müssen diese in manchen Fällen erweitert, verändert oder ersetzt werden. Aus diesem Grund ermöglichen die Anwendungsschemata von Thot den Entwicklern eigene Funktionen zu programmieren, die vor, nach oder anstelle eines Aufrufes einer Thot-Funktion ausgeführt werden. Hierbei können mehrere unterschiedliche Funktionen definiert werden, die dann abhängig vom Elementtyp oder Attribut ausgeführt werden. Dadurch ist es möglich, die Standardfunktionen anzupassen, ohne den Source-Code von Thot verändern zu müssen.

Ein Beispiel hierfür ist das Doppelklicken mit der Maus: dies ist eine Standard-Thot-Funktion. In Amaya, muß jedoch eine spezifische Funktion ausgeführt werden: befindet sich die Maus über einem Anker, muß durch den Doppelklick das verlinkte Dokument geladen und angezeigt werden. In der Sprache A legt der Entwickler fest, daß ein Doppelklick auf ein Element vom Typ Anker, den Aufruf einer spezifischen Funktion zur Folge hat. Diese Funktion, die von dem Entwickler programmiert werden muß, kann über die Thot-Bibliothek auf das HREF-Attribut des Ankers zugreifen, um dann mit Hilfe von libwww das entsprechende Dokument anzufordern. Dieses Dokument wird dann wiederum über die Thot-Bibliothek dargestellt.

Amaya als Thot-Anwendung

Amaya benutzt eine Vielzahl von Thot-Funktionen, erweitert diese aber in spezielle Fällen.

Amaya Source-Tree

Abb.3: Source-Baum von Amaya

Offene Architektur

Durch die Architektur kann Amaya meist ohne Programmierung erweitert werden. Unter Benutzung der Thot-Bibliothek und deren API kann auf viele Editierfunktionen sehr einfach zugegriffen werden. Aufgrund der Erweiterungsmöglichkeiten von Thot über die deklarativen Sprachen, können viele der Änderungen einfach durch Änderungen einzelner Deklarationen durchgeführt werden.