4

De SGML à HyTime

 

4.1 SGML

 

 

 

4.1.1 Structure logique/ présentation de documents textuels

 

SGML est une norme internationale[1] qui a pour objet de représenter la structure logique des documents textuels. C'est un métalangage qui permet d'engendrer des langages de description de structures textuelles, qui se présentent souvent sous forme arborescente. SGML permet de décrire quasiment la totalité des textes existants, pratiquement quel que soit leur degré de complexité. Lorsque les documents ne contiennent pas uniquement du texte, mais également des illustrations: graphiques, photographies, et incrustations vidéo et sonores, SGML signale leur présence comme "entités" non structurées. Ces entités peuvent être considérées comme des boîtes noires, elles ne possèdent pas de structure interne reconnue par SGML, sauf lorsqu'elles contiennent elles-mêmes des documents SGML.

 

Étant donné que SGML a fait l'objet de guides publiés par la DGA, seuls quelques principes de base essentiels seront rappelés ici. Le lecteur est invité à se reporter à ces manuels pour toute information précise concernant cette norme.

 

La connaissance préalable de SGML est fortement conseillée aux lecteurs du présent guide de la norme HyTime, puisque HyTime inclut la totalité de la norme SGML dans son module de base (voir chapitre 6).

 

4.1.2 Type de document et instance de document

 

Tout document traité par SGML appartient à un type de documents. Ce type de document est décrit formellement, à l'aide de la syntaxe SGML. La description d'une structure de classe s'appelle une définition de type de document (DTD). La DTD définit l'ensemble des éléments qui sont ou peuvent être présents dans le document. Elle contient notamment les noms des éléments, dits "identificateurs génériques", et leur modèle de contenu. Les éléments peuvent être qualifiés par des attributs également définis dans la DTD.


Les documents sont balisés selon un marquage qui reprend les identificateurs définis dans la DTD. Chaque document particulier conforme à une DTD qui définit un type de document est appelé "instance de document".

 

 

4.1.3 Représentation formelle des DTD

 

Les DTD contiennent des éléments et des attributs déclarés formellement. Les éléments sont définis par un modèle de contenu, qui obéit à une syntaxe SGML. Les modèles de contenu sont décrits par les identificateurs génériques des éléments suivis ou non d'un indicateur d'occurrence (? pour optionnel, + pour obligatoire répétable et * pour optionnel répétable), séparés par des connecteurs ("," est le connecteur séquentiel, "|" un ou exclusif et "&" indique que les éléments doivent être présents mais dans n'importe quel ordre). Les combinaisons des connecteurs et des symboles d'occurrence permettent de décrire des structures de document suffisamment complexes pour être applicables à un très grand nombre de cas.

 

4.1.4 Parsing

 

Les documents SGML peuvent être validés moyennant un  mécanisme appelé parsing, lequel vérifie si les instances des documents sont conformes à la DTD qui les caractérise. Toute application de la norme SGML contient au minimum un "parseur", c'est-à-dire un analyseur syntaxique de validation du document.

 

4.2 HyTime

 

 

 

 

HyTime a été conçu comme complément de SGML pour décrire les liens entre documents, structurés ou non. Le module de base de HyTime contient des fonctions qui permettent d'étendre la puissance de SGML (voir chapitre 6).

 

4.2.1 Description logique des interconnexions entre documents

 

HyTime introduit la notion d'"hyperdocument", qui est un ensemble délimité de documents constituant une base d'informations dans laquelle il est possible de naviguer.

 


HyTime permet notamment de relier des documents qui ne possèdent pas la même structure. Ces documents peuvent être structurés selon les spécifications de la norme SGML, mais cela n'est pas obligatoire. HyTime peut donc être utilisé comme un moyen d'intégrer des documents différents, notamment textuels, graphiques, et bases de données.

 

4.2.2 Gestion des événements dans les applications multimédia

 

HyTime permet également de gérer les événements qui peuvent survenir dans un document dit multimédia: synchronisation de séquences vidéo et de texte, gestion du déroulement temporel d'une présentation, etc. Comme SGML, HyTime permet d'inclure des objets non textuels sous forme d'entités, mais HyTime ajoute la possibilité d'identifier des parties de documents à l'intérieur des entités.

 

4.2.3 Méta‑DTD et formes architecturales

 

Le langage HyTime est composé d'une "méta-DTD", c'est-à-dire d'un ensemble de spécifications permettant de construire des DTD. Cette méta-DTD est constituée de formes architecturales, qui sont de deux types: éléments et listes d'attributs. Ce sont des formes prédéfinies pouvant soit être reprises en totalité ou en partie, soit servir à construire des définitions d'éléments et d'attributs. On peut concevoir la création d'autres méta-DTD basées sur le même modèle[2].

 

 

Si l'on ajoute des éléments ou des attributs non définis par la norme internationale, on aura alors une application qui sera une surcouche de HyTime,  et les éléments et attributs ajoutés ne seront bien entendus compris que par les logiciels spécifique­ment adap­tés à cette application, et non par de futurs logiciels "HyTime" de base. A la différence des DTD SGML, la méta-DTD de HyTime n'est pas faite pour être lue par une machine, elle sert de guide à l'établissement de DTD qui sont traitées de la même façon que les DTD SGML.

 

4.2.4 Sémantique des éléments et attributs

 


Alors que SGML exclut toute sémantique, puisqu'elle ne définit que la syntaxe, HyTime normalise en partie la sémantique des éléments et attributs, avec les formes architecturales qui sont fournies dans la méta-DTD. En déclarant qu'un élément ou un attribut se rattache à une forme architecturale donnée, on lui confère l'ensemble des propriétés pré-définies pour cette forme architecturale. L'écriture d'une DTD HyTime consiste donc pour une large part à partir de la méta-DTD existante et à en réduire la généralité, afin qu'elle s'applique au document que l'on cherche à décrire. Les méta-éléments et méta-attributs sont en effet structurés, mais de façon très ouverte.

 

Du point de vue syntaxique, HyTime n'ajoute aucun élément de langage à SGML. HyTime, en ce sens, est une application de SGML. L'avantage que cela procure à l'utilisateur est que non seulement aucune syntaxe nouvelle n'est à apprendre lorsque l'on connaît déjà celle de SGML, mais également les procédures de conversion d'un document SGML existant en un document HyTime en sont grandement facilitées. Un document SGML peut être converti quasi automatiquement en document HyTime; des restrictions peuvent s'appliquer par exemple dans le cas où la structure des liens n'est pas conforme à une des deux formes architecturales HyTime (lien contextuel et lien indépendant). Les attributs SGML qui ne sont pas des attributs HyTime seront validés par le parser SGML mais ignorés par le moteur HyTime. On a donc intérêt à concevoir de nouvelles architectures de document en conformité avec la norme HyTime: elles seront dès aujourd'hui traitées par les applications SGML existantes. Dès que les produits HyTime seront disponibles, elles pourront être directement utilisées avec toutes leurs fonctionnalités purement HyTime. Étant donné en outre que HyTime permet de fixer des valeurs d'attribut dans la DTD, on peut récupérer des DTD SGML et leur donner des valeurs constantes pour certains attributs, sans modifier en aucune façon les instances de document balisées.

 

Du point de vue de son domaine d'application, HyTime étend SGML aux documents multimédia et hypertextuels. Cette double relation — sous-ensemble syntaxique et sur-ensemble pour les documents — est ce qui fait la force de la norme HyTime. Ceci correspond d'ailleurs aux besoins réels des utilisateurs à la recherche de mécanismes leur permettant d'étendre les possibilités de traitement de leurs documents électroniques.

 

 

4.2.5 Moteur HyTime et parseur SGML

 


Comme SGML, HyTime permet de valider les documents. Un moteur HyTime est un parseur SGML auquel s'ajoute la capacité de valider les liens de navigation et de synchronisation. Une application conforme HyTime ne doit pas nécessairement posséder un moteur HyTime (v. clause 12.4). La norme ISO/IEC 10744 ne précise pas quelles doivent être les spécifications d'un moteur HyTime, sinon qu'il doit être capable de repérer les erreurs éventuelles dans les instances de classes de document.

 

4.2.6 Extension du mécanisme SGML ID/IDREF à la gestion des hyperliens

 

SGML permet déjà de mettre en œuvre un système de références croisées par le mécanisme consistant à iden­tifier un élément par un attribut d'identification (ID), et d'y faire appel au moyen d'un attribut identificateur de réfé­ren­ce (IDREF)[3]. HyTime per­met de gérer des hyperliens de manière beaucoup plus riche: les références ne sont pas limitées à un seul document. Ils peuvent pointer vers des localisa­tions non déclarées ex­pli­ci­te­ment en tant qu'extré­mités de lien.

 

 

 

 

4.2.7 Gestion des DTD hétérogènes avec HyTime

 

Le système de liens de HyTime fournit une solution à un problème qui se pose aux environnements SGML constitués de plusieurs types de documents. Dans la pratique, on gère des documents de plusieurs types obéissant à plusieurs définitions de types de documents. Il existe également des documents faits de sous-documents divers qui peuvent être construits avec plusieurs DTD différentes. HyTime permet donc de dépasser l'une des limitations de SGML, qui pose des problèmes opérationnels importants. Il n'est plus nécessaire d'attendre par exemple qu'une branche industrielle dans son ensemble s'accorde sur un ensemble de DTD communes pour concevoir une architecture SGML, puisque les différences qui pourraient survenir sont gérables moyennant les liens fournis par HyTime. HyTime donne donc à SGML une souplesse qui lui faisait défaut.

 

 

4.2.8 HyTime est dans la continuité de SGML

 


HyTime a été conçu par Charles F. Goldfarb et Steven R. Newcomb. Comme Charles F. Goldfarb est également le principal auteur de SGML, il existe une certaine continuité dans les idées essentielles des deux normes. Il s'agit dans les deux cas d'un processus de balisage descriptif qui permet de préserver l'information de structure d'un document. HyTime, comme SGML, permet l'interopérabilité de systèmes documentaires. Pas plus que SGML, HyTime ne contient de fonction permettant de traiter le formatage du document, sa présentation. Il s'agit d'une description de leur structure. HyTime est basé sur le principe qui est à la base de SGML: la séparation entre la structure de l'information et sa présentation. Dans le cas de documents textuels, la présentation des documents correspond essentiellement à l'organisation des informations sur une page papier ou sur une page écran au formatage papier ou écran. Le contenu du document textuel concerne du texte; tout ce qui n'est pas texte est groupé sous le nom "entités". Dans le cas des documents hypermédia, l'information englobe le contenu textuel et les entités, et s'enrichit de la description des liens et des agendas d'événements. A la présentation, s'ajoutent les scénarios interactifs, ainsi que l'exécution des séquences vidéo ou sonores.

 

HyTime n'a aucunement pour but de se substituer à SGML. Grâce à ses fonctions, HyTime enrichit SGML et répond aux besoins des utilisateurs de documents électroniques.

 



[1]. Standard Generalized Markup Language. ISO 8879:1986.

[2]. C'est le cas par exemple des méta-DTD en cours d'élaboration par le comité CApH (Conventions for the Application of HyTime), qui fait partie du GCARI (Graphics Communication Association Research Institute).

[3]. Voir Guide d'utilisation de SGML, p. 27.