ANALYSE du Browser AMAYA de W3C

RAPPORT DE PROJET INTERNET

DESS ISI Année 1998-1999

Evelyne PARTHENAY DESS - ISI (LOG)

Tina WILHELM DESS - ISI (LOG)


SOMMAIRE

1. LEXIQUE *

2. OBJET *

3. LE BROWSER AMAYA *

3.1. PRESENTATION *

3.2. PRINCIPE *

3.3. ARCHITECTURE MODULAIRE *

3.4. LES LANGAGES DE THOT *

3.4.1. Structure logique : langage S *

3.4.2. Document de présentation : langage P *

3.4.3. Syntaxe externe : langage T *

3.4.4. Construction dapplication : langage A *

3.4.5. Généralités *

3.5. FICHIERS DE REPRESENTATION DE DOCUMENTS DANS AMAYA *

3.5.1. Structure de document et contenu *

3.5.2. Présentation de document et vues *

3.5.3. Sortie HTML *

3.5.4. Présentation structurelle d'un document *

3.5.5. Présentation alternative d'un document *

3.6. LA LIBRAIRIE THOT *

3.6.1. Fonctions de manipulation de document *

4. AMAYA ENTANT QU'APPLICATION THOT *

4.1. COMPOSANTS LOGICIELS *

4.1.1. Le parseur HTML *

4.1.2. Le parseur CSS *

4.1.3. Interface utilisateur graphique *

4.1.4. Fonctions d'édition : standard Thot *

4.1.5. Fonctions spécifiques d'édition *

4.1.6. Transformation de structure *

4.1.7. Protocoles de transport *

4.2. MODIFIER ET ETENDRE AMAYA *

4.2.1. Modifier et étendre AMAYA *

4.2.2. Présentation par défaut des documents *

4.2.3. Création de nouvelles vues *

4.2.4. Ajout de nouveaux tags HTML et attributs *

4.2.5. Modifier des commandes existantes *

4.2.6. Ajouter de nouvelles transformations de structure *

5. REMARQUES ET CRITIQUES PERSONNELLES SUR AMAYA *

5.1. MAL-FONCTIONNEMENT *

5.2. COMPARAISON AVEC D'AUTRES BROWSER WEB *

6. CONCLUSION *

7. ANNEXES *

 


 

1. LEXIQUE

 

HTML : HyperText Markup Language. langage simple utilisé pour créer des documents hypertexte pour le web. HTML est une implémentation relativement simple de SGML ; il en est un sous-ensemble.

SGML : Standard Generalized Markup Language . standard servant à définir des types de documents

CSS : Cascading Style Sheet. Cest une norme permettant de décrire des feuilles de style, qui se borne à un langage déclaratif comme HTML. Cela contient des règles de présentation des différents éléments de structure d'un document.

DTD : Document Type Definition. Cest un fichier contenant des informations sur la syntaxe dun document.

 


 

 2. OBJET

 

L'objectif de cette analyse est d'aider à la compréhension des mécanismes de fonctionnement et de développement du browser et éditeur de texte Amaya du consortium W3C, pour en permettre une extension rapide.

 


 

3. LE BROWSER AMAYA

 

3.1. PRESENTATION

Amaya est un browser ainsi qu'un éditeur de documents pour le web.

C'est une application basée sur Thot, outil général dont le but est l'élaboration de documents structurés, séparant contenu, structure et présentation.

Fig.1. Présentation de la vue principale.

 

3.2. PRINCIPE

Amaya est un outil Web ayant sa propre approche dHTML. Il maintient un modèle de document interne adhérent à la DTD (Document Type Définition).

Entant qu'éditeur, il propose une interface utilisateur de style WYSISWYG  ("What You See Is What You Get "), ce qui permet à lutilisateur d'agir sur un document formaté pour en modifier le source HTML. Le source est pour cette raison, traité comme la définition d'une structure de données.

Pour parser le source dun fichier, Amaya construit une représentation interne de la structure du document, sous la forme d'un arbre, structure logique qui est utilisée aussi bien pour le formatage des données que pour l'édition.

L'éditeur suit toujours la DTD HTML lorsquil manipule la structure du document, et traite simplement les opérations valides.

L'avantage de cette approche est quelle conduit à des documents bien structurés permettant aux autres outils de traiter les documents avec plus de sûreté.

 

3.3. ARCHITECTURE MODULAIRE

 

Amaya est un gros logiciel construit au-dessus de Thot, et présente une architecture modulaire. Dans Thot, un document est en réalité une structure abstraite, implémentée comme un arbre rassemblant les éléments typés. Toutes les fonctions de manipulations travaillent sur cet arbre de la même manière quelque soit le type des éléments de celui-ci.

 

Amaya hérite de Thot un ensemble de fonctions de manipulation de document et une API.

Celle-ci offre la possibilité dinclure des fonctions supplémentaires, avec un minimum de modification dans le code source, au travers d'un mécanisme de Callback. Cest par exemple le cas du menu MathML, qui est un prototype d'implémentation permettant d'inclure des symboles mathématiques dans le texte.

 

Certaines modifications sont donc possibles sans avoir à toucher au code source, mais simplement en modifiant des fichiers ou schémas écrits dans l'un des langages déclaratifs.

Par exemple, le fichier EDITOR.A écrit en langage 'A', peut être édité afin de créer ses propres menus. De cette façon de tels changements sont facilement accessibles et sont à la portée de personnes non informaticiennes.

 

L'API, disponible en C et Java, permet également de modifier des fonctionnalités existantes. Mais cela nécessite d'avoir un compilateur C ou Java ainsi que de solides connaissances en programmation objet.

 

3.4. LES LANGAGES DE THOT

Thot intègre 4 langages déclaratifs permettant décrire 4 types de schémas. Un schéma est un ensemble de règles définissant le comportement de léditeur sur le regard de la structure logique des documents, leur présentation, leur syntaxe interne et toutes les spécifications. En effet, dans Thot, un document est représenté par sa structure logique, à savoir son organisation en éléments (titre, chapitres, sections, paragraphes, etc.).

3.4.1. Structure logique : langage S

C'est un langage déclaratif simple, permettant décrire un schéma de structure définissant la structure logique interne dun type de document. Ces règles de structure, spécifient les types déléments et les attributs disponibles et indiquent comment ces éléments peuvent être assemblés pour construire une structure valide. De plus elles indiquent quels attributs peuvent être associés avec chaque type d'éléments.

Amaya utilise un schéma de structure pour spécifier la structure logique d'un document HTML. Ce schéma est équivalent à la DTD HTML.

 

3.4.2. Document de présentation : langage P

C'est un langage d'écriture de schéma de présentation. Il permet de définir les documents 'images' affichés dans les vues. Un schéma de présentation spécifie des vues proposées à l'utilisateur et lui indique, suivant des règles de présentation, comment les éléments et les attributs définis dans le schéma de structure correspondant, devraient être affichés dans celles-ci.

Amaya utilise plusieurs schémas de présentation, lesquels définissent différentes mises en page et différents styles, pour les documents HTML :

- un pour le contenu des écrans,

- un pour les impressions,

- etc. .

Ces schémas définissent la présentation par défaut appliquée aux documents HTML.

En revanche, si une feuille de style est associée à un document, ces schémas de présentation sont étendus avec les règles de présentation de celle-ci.

 

3.4.3. Syntaxe externe : langage T

C'est un langage déclaratif, permettant d'écrire des schémas de transformation pour spécifier la syntaxe externe dun document.

Il spécifie comment chaque éléments et attributs définis par un schéma de structure devraient être représentés dans la représentation externe.

 

Dans Amaya, un schéma de transformation est utilisé pour définir la syntaxe HTML. D'autres schémas peuvent être utilisés pour sauver la documentation en ASCII ou en LATEX.

 

3.4.4. Construction d'application : langage A

C'est un langage déclaratif simple utilisé pour définir l'interface utilisateur d'une application, mais aussi ses commandes spécifiques (code de base de l'éditeur).

Ainsi un développeur peut spécifier la barre de menu qui apparaît au sommet de chaque vue, le contenu des sous-menus correspondants et les fonctions appelées par ceux-ci.

 

Un schéma d'application permet également d'étendre ou modifier les fonctions d'édition de base fournies par Thot.

Amaya est une application Thot décrite en langage A. Elle utilise les fonctions d'édition de base fournies par Thot, pour lequel elle ajoute des commandes particulières qui sont spécifiques au web et à la structure HTML.

3.4.5. Généralités

Chaque langage a son propre compilateur. Les langages S, P et T, génèrent des fichiers chargés dynamiquement par la librairie Thot au lancement. Le langage A, quant à lui, génère du code C pouvant être compilé et lié avec les modules qui implémentent l'application.

 

3.5. FICHIERS DE REPRESENTATION DE DOCUMENTS DANS AMAYA

3.5.1. Structure de document et contenu 

Un document est représenté par un arbre schématisant la structure du document. Cet arbre est contraint par des règles spécifiées dans le schéma de structure de Thot, écrit en langage S (fichier HTML.S dans le répertoire amaya). On y trouve le nom des types d'éléments et les attributs qui ne sont pas ceux qui sont vus par l'utilisateur, sur son écran. La correspondance entre les noms internes et externes est donnée par le fichier HTML.en dans le répertoire amaya.

Le fichier '.en' est propre à la langue anglaise (english), pour la langue française, nous trouverons un fichier '.fr' (french). Il serait donc facile d'ajouter un fichier pour une autre langue.

 

3.5.2. Présentation de document et vues 

L'arbre interne de la structure représente seulement la structure logique des documents HTML. L'aspect graphique de ces documents est spécifié par le schéma de présentation Thot (fichier HTML.P dans le répertoire amaya), écrit en langage P.

Amaya utilise un seul fichier source(HTML.P) pour spécifier les différents schémas de présentation, en utilisant la compilation conditionnelle.

 

3.5.3. Sortie HTML

Pendant l'édition Amaya travaille sur l'arbre de la structure interne des documents. Les fichiers HTML sont produits seulement lors de la sauvegarde du document.

L'arbre de structure est alors écrit dans le fichier de sortie suivant le schéma de transformation de Thot (fichier HTML.T dans le répertoire amaya), écrit en langage T.

 

3.5.4. Présentation structurelle d'un document  

Fig.2. Vue de la structure d'un document.

 

 

3.5.5 Présentation alternative d'un document

Fig.3 Schéma alternatif d'un document.

 

3.6. LA LIBRAIRIE THOT

La principale librairie Thot, est fournie aux développeurs avec une API leurs permettant de définir toutes les entités et tous les objets nécessaires au développement non seulement d'un document mais aussi de son environnement.

Il y a des fonctions pour créer, modifier, ouvrir, accéder, trouver, déplacer, telle ou telle chose, comme les documents, structure logique, élément, attribut, liens, vues, .

3.6.1. Fonctions de manipulation de document 

Toutes les fonctions de manipulation de fichier, sont basées sur les schémas présentés au-dessus dans le paragraphe " 3.4. Les langages de Thot ".

Comme exemple, un programme d'application na besoin seulement que de deux fonctions NewTree et InsertTree pour créer un nouveau sous - arbre dans la structure du document.

La fonction NewTree reçoit comme paramètre, le type de l'élément. Celui devient la racine du nouvel arbre et doit s'accrocher au schéma de la structure. La fonction créée ensuite tous les éléments requis dans le sous - arbre.

La fonction InsertTree utilise le schéma de structure pour contrôler si l'arbre peut-être inséré à l'emplacement requis dans la structure du document , et utilise le schéma de présentation pour réafficher seulement ce qui doit l'être, dans toutes les vues ouvertes.

Seule la structure logique du document doit être prise en compte par les développeurs, le reste étant traité par Thot, ce qui simplifie le développement d'application.

Thot fournit également une librairie de fonctions graphiques pour l'interface utilisateur(et allant avec le langage A), qui simplifie aussi le développement d'une interface utilisateur.

 


 

4. AMAYA ENTANT QU'APPLICATION THOT

 

Amaya entant qu'application Thot, hérite de nombreuses fonctions de la librairie Thot, telle que l'éditeur de texte, le formatage, la manipulation de structure de base, le dialogue utilisateur, l'affichage d'image, etc. .

 

D'avantage de fonctions spécifiques sont implémentées par les composants logiciels suivants.

4.1. COMPOSANTS LOGICIEL

4.1.1. Le parseur HTML

Les fichiers HTML sont parsés par le module html2thot.c(dans le répertoire amaya) qui construit la structure interne de l'arbre.

Les éléments et les attributs HTML, sont déclarés dans une tables au début du fichier hmtl2thot.c, aussi bien que les éléments et les attributs correspondants sont définis dans le schéma de structure HTML.S.

Le parseur ne rejette aucun document. Il essaie tout de même de transformer la structure d'un document dont la structure est incorrecte.

Lors dune modification faite par l'utilisateur, il ne prendra en compte que les opérations structurellement valides.

 

4.1.2. Le parseur CSS

Le parser CSS lit la syntaxe CSS contenue dans la feuille de style de la section HEAD du fichier HTML, ou contenue dans un attribut de la section STYLE, et génère les règles de présentation correspondantes.

Les feuilles de style et la syntaxe CSS en général, sont parsées par le module HTMLstyle.c.

Le principe de la feuille de style est de ne se préoccuper que de la structuration du texte lorsqu'on le compose.

 

4.1.3. Interface utilisateur graphique

Amaya utilise la toolkit graphique Motif, qui si nest pas disponible peut être remplacée par lesstif (un clone gratuit).

L'interface utilisateur d'Amaya contient trois types d'objets :

- Une barre de menu, au sommet de chaque fenêtre de document. Cette barre et tous ses menus, incluant les menus en cascade sont spécifiés dans le schéma d'application Thot (fichier EDITOR.A dans le répertoire amaya), écrit en langage A.

- Une barre de boutons au-dessous de la barre de menu, dans la vue formatée. Cette barre est crée par Amaya au moment de l'initialisation (fonction InitDocView du module amaya\init.c).

- Diverses boites de dialogue.

 

4.1.4. Fonctions d'édition : standard Thot

La plupart des fonctions d'édition de base sont simplement des fonctions standards de la librairie Thot. Le nom des ces fonctions commence par Ttc.

 

4.1.5. Fonctions spécifiques d'édition

En plus des fonctions standards, Amaya a ses propres fonctions d'édition.

- Certaines sont appelées depuis la barre de menu(fichier amaya\EDITOR.A) et sont implémentées dans des modules C du répertoire amaya.

- Certaines sont appelées depuis la barre de boutons(fonction InitDocView dans le module amaya\init.c) et sont aussi implémentées dans des modules C du répertoire amaya.

- Certaines sont appelées depuis les commandes standards d'édition de Thot, définies dans le fichier amaya\HTML.A et implémentées en C dans les modules du répertoire amaya. Elles implémentent des traitements spécifiques requis pour les tables, les images, les fenêtres, les feuilles de style, etc.

 

4.1.6. Transformation de structure

De simples transformations de structure sont implémentées par la librairie Thot sur le schéma de structure. Des transformations plus complexes sont décrites par le langage de transformation.

Les commandes de transformation de structure sont détenues par deux modules :

trans.c et transparse.c. Ces modules sont conduits par le fichier HTML.trans(dans le répertoire amaya), qui spécifie les transformations possibles.

 

4.1.7. Protocoles de transport

Amaya accède aux serveurs web distants à travers le protocole HTTP 1.1.

Deux implémentations peuvent être utilisées, soit celle du libwww, soit celles des classes Java de Jigsaw (qui joue le même rôle qu Amaya coté serveur).

Libwww est une bibliothèque permettant de tester les implémentations des protocoles experimentaux de W3C.

4.2. MODIFIER ET ETENDRE AMAYA

Amaya entant qu'application Thot, permet a celle-ci d'être étendu de multiples façons, souvent très simplement et sans programmation.

 

4.2.1. Modifier et étendre AMAYA

Les barres de menus et menus déroulants sont définies dans le fichier EDITOR.A (répertoire amaya).

- Pour ajouter de nouveaux menus il faut mettre a jour le fichier xx-amayadialogue (répertoire config) ou xx est le nom du langage fr pour french et en pour english.

- Pour effectuer des modifications dans la barre de boutons il faut éditer la fonction InitDocView dans le module init.c du

 

4.2.2. Présentation par défaut des documents

Les changements peuvent se faire de plusieurs manières :

- En utilisant une feuille de style personnalisée : créer un fichier amaya.css dans votre répertoire (écrit selon la norme CSS1) ou l'éditer si elle existe.

- En modifiant le schéma de présentation utilisé par Amaya (éditer le fichier HTML.P du répertoire amaya).

 

4.2.3. Création de nouvelles vue

En éditant et compilant le fichier HTML.P mais aussi le fichier EDITOR.A pour ajouter un nouvel item au menu des Vues. Celui-ci est associé a une fonction C devant être créée dans le fichier init.c. On peut utiliser les fonctions ShowStructure et ShowAlternate par exemple.

On peut spécifier la position par défaut et la taille de la vue dans le fichier HTML.conf.

 

4.2.4. Ajout de nouveaux tags HTML et attribut

On peut mettre à jour plusieurs fichiers.

 

4.2.5. Modifier des commandes existantes

Le fichier HTML.A spécifie toutes les extensions et tous les remplacements pour les commandes d'édition standards Thot. Amaya spécifie aussi ses propres fonctions d'édition dans ce fichier (implémentées dans les modules C du répertoire amaya).

 

4.2.6. Ajouter de nouvelles transformations de structure

Pour offrir de nouvelles transformations, il faut les spécifier dans le fichier HTML.trans du répertoire amaya.

 


 

5. REMARQUES ET CRITIQUES PERSONNELLES SUR AMAYA

Nous avons téléchargé le binaire de la version solaris 2.6 et nous l'avons utilisée pour adapter ce document pour le web, en partant d'un fichier écrit sous Word.  

5.1. MAL-FONCTIONNEMENT

 

5.2. COMPARAISON AVEC D'AUTRES BROWSER WEB

Les points positifs se portent sur Amaya entant qu'éditeur HTML.

 

Les points négatifs se portent sur Amaya entant que browser Web.

 

En résumé,


 

6. CONCLUSION

 

Amaya a été développé pour démontrer et expérimenter la plupart des nouveaux standards et protocoles développés par le consortium W3C. Etant donné l'évolution rapide des technologies du Web, Amaya joue un rôle important.

Amaya a été crée au-dessus de Thot, est en a hérité sa force une architecture modulaire et facilement extensible grâce aux mécanisme dabstraction de celui-ci.

Il est adaptable et extensible :

- de nouvelles fonctionnalités peuvent être facilement ajoutées

- et il est disponible sur les plates-formes Unix et Windows'95/NT.

Rappelons qu'avec Amaya, celui-ci étant à la fois un navigateur et un éditeur proposant une interface utilisateur de style WYSISWYG, similaire aux éditeurs commerciaux les plus populaires, l'utilisateur n'a pas besoin de connaître les langages HTML et CSS.

Amaya est l'outil d'excellence pour créer des pages web structurellement correcte et tester les pages web intégrant de nouveaux standards non encore supportés par les browsers du commerce.

 


 

7. ANNEXES

Présentation du répertoire Thot.

Thot\amaya contient les sources de l'application amaya

\batch

\config

\dicopar

\fonts

\libjpeg

\libpng

\libwww

\pluginlib

\tablelib contient les sources de la librairie Thot

\tools

 

 

Présentation de l'arborescence d'Amaya

 

Thot\amaya\HTML.S
schéma de structure Thot
structure de document et contenu
déclaration de nouveau type déléments et attribut
Thot\amaya\HTMLP.P
schéma de présentation Thot
présentation de document et vue et changement du schéma de
présentation / création de nouvelles vues
Thot\amaya\HTMLT.T
schéma de transformation
sortie HTML
Thot\amaya\HTML.en
correspondance entre les noms internes et externes

 

Composants logiciels

 

Thot\amaya\HTML.A
commandes d'édition standards Thot.
appels de commandes spécifiques à Amaya.
Thot\amaya\trans.c, transparse.c
ces 2 fonctions détiennent les commandes de transformation de structure.
Thot\amaya\HTML.trans
conduit les 2 fonctions ci-dessus.
Thot\amaya\EDITOR.A
(barre de menu) schéma d'application Thot
fonctions dédition propres à Amaya
création de nouvelles vues(nouvel item) dans la barre de menu
Thot\amaya\init.c
(barre de boutons) fonction InitDocView
fonction dédition propres à Amaya.
Thot\amaya\html2thot.c
parse les fichiers HTML et construit l'arbre abstrait correspondant, pour un document Thot de type THML.
Thot\amaya\HTMLstyle.c
parse la syntaxe CSS.
Thot\amaya\.amaya.css
changement de la représentation de document par défaut.
Thot\amaya\HTML.conf
formattage de vue : position et taille de la vue par défaut.
Thot\amaya\HTMLactions.c
fonctions du browser amaya apelées depuis Thot et déclarées dans HTML.A. Ces fonctions concernent les liens et dautres caractéristiques générales dHTML.
Thot\amaya\HTMLbook.c
initialise les fonctions et boutons de fonction de l'application Amaya.
Thot\config\xx-amayadialogue
pour faire des changements on ajoute de nouveau menu.
xx représente le nom de la langue : en pour English, fr pour French