Evelyne PARTHENAY DESS - ISI (LOG)
Tina WILHELM DESS - ISI (LOG)
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 *
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.
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.
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.
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é.
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.
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.).
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.
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.
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.
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.
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.
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.
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.
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.
Fig.2. Vue de la structure d'un document.
Fig.3 Schéma alternatif d'un document.
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, .
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.
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.
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.
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.
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.
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.
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.
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.
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.
Amaya entant qu'application Thot, permet a celle-ci d'être étendu de multiples façons, souvent très simplement et sans programmation.
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
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).
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.
On peut mettre à jour plusieurs fichiers.
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).
Pour offrir de nouvelles transformations, il faut les spécifier dans le fichier HTML.trans du répertoire 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.
Dans Amaya, les fonctions des menus déroulants sont décalées. Par exemple, il faut sélectionner Alternate_View pour obtenir l'ouverture de la fenêtre Structure_View.
Le curseur ne change pas d'aspect lorsqu'il est positionné sur une url.
Les images ne sont pas toujours bien décodées (taille, couleur).
Le browser ne sait pas interpréter les frames, alors qu'un grand nombre de page HTML en contiennent.
La fonction Undo ne marche pas.
Amaya se ferme brutalement sans raison apparente.(par exemple il s'est refermé 2 fois dans une session de 3heures)
Les points positifs se portent sur Amaya entant qu'éditeur HTML.
Hormis les malfonctionnements, nous avons trouvé l'interface utilisateur conviviale et intuitive.
Amaya est le seul éditeur de page web voyant la structure d'un document comme un arbre. C'est en effet, le moyen le plus sûr de produire un document HTML, structurellement correct. Et ainsi, aucune mauvaise interprétation ne peut être faite par dautres browsers.
L'ensemble constitué des menus types, links, views représente un réel éditeur de texte.
Un contrôleur orthographique y est incorporé.
Une icône permet d'inhiber les menus et icônes spécifiques à l'éditeur, laissant seule la fonction browser.
Les différentes fonctionnalités du menu views permettent le multifenêtrage.
Nous avons trouvé la documentation en ligne d'excellente qualité.
Les points négatifs se portent sur Amaya entant que browser Web.
Nous avons cherché sans succès un profil utilisateur, que nous trouvons manquant ainsi qu'une fonctionnalité bookmark.
Nous n'avons pas non plus trouvé de moteur de recherche de page web.
En résumé,
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.
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