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écifiquement adapté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 à identifier un élément par un
attribut d'identification (ID), et d'y faire appel au moyen d'un attribut
identificateur de référence (IDREF)[3].
HyTime permet 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 localisations non déclarées explicitement 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.