Lisez-moi S.V.P. 

4. Définition des modules abstraits

Sommaire

Cette section est normative.

Un module abstrait est une définition d'un module XHTML utilisant du texte ordinaire et quelques conventions de marquage informelles. Bien qu'une telle définition n'ait en général pas d'utilité dans le traitement machine des types de document, elle est essentielle pour aider les personnes à comprendre ce que contient le module. Cette section décrit la méthode avec laquelle les modules abstraits sont définis. Un module conforme à XHTML n'est pas obligé de fournir une définition de module abstrait. Par contre, quiconque développe un module XHTML est encouragé à fournir une abstraction afin de faciliter l'utilisation du module.

4.1. Conventions syntaxiques

Les modules abstraits ne sont pas définis dans une grammaire formelle. Toutefois, les définitions adhèrent aux conventions syntaxiques suivantes. Ces conventions sont semblables à celles des définitions DTD XML et devraient être familières aux créateurs de définitions DTD XML. Chaque élément syntaxique discret peut se combiner à d'autres pour fabriquer des expressions plus complexes conformes à l'algèbre définie ici.

nom d'élément
Lorsqu'un élément est inclus dans un modèle de contenu, son nom explicite sera listé.
ensemble de contenu (content set)
Certains modules définissent des listes de noms d'élément explicites appelées des ensembles de contenu. Lorsqu'un ensemble de contenu est inclus dans un modèle de contenu, son nom sera listé.
expr ?
Zéro ou une instance de l'expression expr est permise.
expr +
Une ou plusieurs instances de l'expression expr sont obligatoires.
expr *
Zéro ou plus instances de l'expression expr sont permises.
a , b
L'expression a est obligatoire, suivie de l'expression b.
a | b
L'une ou l'autre des expressions a et b est obligatoire.
a - b
L'expression a est permise, en omettant les éléments dans l'expression b.
parenthèses
Lorsqu'une expression apparaît entre parenthèses, l'évaluation des sous-expressions entre parenthèses advient avant celle des expressions hors parenthèses (en commençant au niveau d'imbrication le plus profond).
extension des éléments prédéfinis
Dans certains cas, un module ajoute des attributs à un élément. Auxquels cas, le nom d'élément est suivi d'une esperluette (&).
définition d'attributs obligatoires
Lorsqu'un élément demande de définir un attribut, le nom de cet attribut est suivi d'une astérisque (*).
définition du type des valeurs d'attribut
Lorsqu'un module définit le type d'une valeur d'attribut, il le fait en listant le type entre parenthèses après le nom de l'attribut.
définition des valeurs légales des attributs
Lorsqu'un module définit les valeurs légales d'un attribut, il le fait en listant les valeurs légales explicites (entre guillemets), séparées par des caractères barre verticale (|), entre des parenthèses à la suite du nom de l'attribut. Si l'attribut a une valeur par défaut, celle-ci est suivie d'une astérisque (*). Si l'attribut a une valeur fixe, le nom de l'attribut est suivi d'un signe égal (=) et la valeur est entre guillemets.

4.2. Types de contenu

Les définitions des modules abstraits établissent les modèles de contenu minimaux, atomiques, de chaque module. Ces modèles de contenu minimaux référencent les éléments dans le module même. Ils peuvent aussi référencer des éléments dans les autres modules dont dépend le module abstrait. Enfin, le modèle de contenu demande dans beaucoup de cas que le texte soit permis comme contenu d'un ou plusieurs éléments. Auxquels cas, le texte est symbolisé par PCDATA, une abréviation anglaise de « parsed character data » (en français, données textuelles analysables), dénotant les séquences de caractères à analyser par un processeur XML à la recherche du balisage (données textuelles traitées). Un type de contenu peut aussi être défini par EMPTY (vide), signifiant que l'élément n'a pas de contenu dans son modèle de contenu minimal.

4.3. Types d'attribut

À certaines occasions, il est nécessaire de définir les types des valeurs d'attribut ou l'ensemble explicite des valeurs permises pour les attributs. Les types d'attribut suivants (définis dans la recommandation XML 1.0) sont utilisés dans les définitions des modules abstraits :

Type d'attribut Définition
CDATA Données textuelles (character data).
ID Un identificateur unique au document.
IDREF Une référence à un identificateur unique au document.
IDREFS Une liste de références à des identificateurs uniques au document, séparées par des espaces.
NAME Un nom avec les mêmes contraintes de caractères que le type ID plus haut.
NMTOKEN Un nom composé seulement d'atomes de nom (name tokens), comme défini dans XML 1.0 [XML].
NMTOKENS Une ou plusieurs valeurs de type NMTOKEN, séparées par des caractères blancs.

Outre ces types de données prédéfinis, XHTML Modularization définit les types de données suivants et leur sémantique (si besoin) :

Type de données Description
Character Un seul caractère [ISO10646].
Charset Un codage des caractères, selon le document [RFC2045].
Charsets Une liste de codages des caractères, selon [RFC2045], séparés par des espaces.
Color

Le type de valeur d'attribut "Color" se rapporte aux définitions de couleur comme indiqué dans [SRGB]. Une valeur de couleur peut soit être un nombre hexadécimal (préfixé d'un caractère dièse), soit l'un des seize noms de couleur. Les noms de couleur ne dépendent pas de la casse.

Noms de couleurs et valeurs sRGB
Black Swatch Black = "#000000" Green Swatch Green = "#008000"
Silver Swatch Silver = "#C0C0C0" Lime Swatch Lime = "#00FF00"
Gray Swatch Gray = "#808080" Olive Swatch Olive = "#808000"
White Swatch White = "#FFFFFF" Yellow Swatch Yellow = "#FFFF00"
Maroon Swatch Maroon = "#800000" Navy Swatch Navy = "#000080"
Red Swatch Red = "#FF0000" Blue Swatch Blue = "#0000FF"
Purple Swatch Purple = "#800080" Teal Swatch Teal = "#008080"
Fuchsia Swatch Fuchsia = "#FF00FF" Aqua Swatch Aqua = "#00FFFF"

Ainsi les valeurs de couleur "#800080" et "Purple" désignent toutes deux la couleur violette.

ContentType Un type de média, selon le document [RFC2045].
ContentTypes Une liste de types de média, selon [RFC2045], séparés par des virgules.
Coords Une liste de coordonnées, séparées par des virgules, à utiliser pour la définition de zones.
Datetime Une information de date et d'heure.
FPI Une chaîne de caractères représentant un identificateur public formel (Formal Public Identifier) SGML.
FrameTarget Le nom du cadre utilisé comme destination des résultats de certaines actions.
LanguageCode Un code de langue, selon le document [RFC3066] ou ses successeurs.
LanguageCodes Une liste de gammes de langue, séparées par des virgules, avec des paramètres q optionnels, comme défini à la section 14.4 du document [RFC2616] en valeur du champ Accept-Language d'une en-tête de requête. Les codes de langue particuliers devraient être conformes au document [RFC3066] ou ses successeurs.
Length La valeur en pixels ou en pourcentage de l'espace horizontal ou vertical disponible. Ainsi la valeur "50%" signifie la moitié de l'espace disponible.
LinkTypes

Les auteurs peuvent utiliser les types de lien reconnus suivants, listés ici avec leurs interprétations conventionnelles. Une valeur de type LinkTypes se rapporte à une liste de types de lien, séparés par des espaces. Les autres caractères blancs ne sont pas permis dans les types de lien.

Ces types de lien ne dépendent pas de la casse, c'est-à-dire que "Alternate" a la même signfication que "alternate".

Les agents utilisateurs, les moteurs de recherche, etc. peuvent interpréter ces types de lien de diverses façons. Par exemple, les agents utilisateurs peuvent offrir un accès à des documents liés à l'aide d'une barre de navigation.

Alternate
Désigne des versions de remplacement pour le document dans lequel apparaît le lien. Utilisé avec l'attribut hreflang, ce type de lien implique une traduction du document. Utilisé avec l'attribut media, il implique une version conçue pour un média différent (ou des médias).
Stylesheet
Se rapporte à une feuille de style externe. Cf. le module de style pour des détails. Ce type s'utilise avec le type de lien "Alternate" pour les feuilles de style alternatives sélectionnables par l'utilisateur.
Start
Se rapporte au premier document dans une collection de documents. Ce type de lien indique aux moteurs de recherche le document que l'auteur estime être le point de départ de la collection.
Next
Se rapporte au document suivant dans une succession linéaire de documents. Les agents utilisateurs peuvent choisir de précharger le document "next", afin de réduire le temps perceptible du chargement.
Prev
Se rapporte au document précédent dans une série ordonnée de documents. Certains agents utilisateur reconnaissent également le synonyme "Previous".
Contents
Se rapporte à un document servant de table des matières. Certains agents utilisateurs reconnaissent également le synonyme "ToC" (Table of Contents)).
Index
Se rapporte à un document fournissant un index du document courant.
Glossary
Se rapporte à un document fournissant un glossaire des termes pertinents au document courant.
Copyright
Se rapporte à une déclaration des droits d'auteur pour le document courant.
Chapter
Se rapporte à un document servant de chapitre dans une collection de documents.
Section
Se rapporte à un document servant de section dans une collection de documents.
Subsection
Se rapporte à un document servant de sous-section dans une collection de documents.
Appendix
Se rapporte à un document servant d'annexe dans une collection de documents.
Help
Se rapporte à un document offrant une aide (plus d'informations, liens vers d'autres sources d'information, etc.)
Bookmark
Se rapporte à un signet (bookmark). Un signet est un lien vers un point d'entrée dans un document étendu. L'attribut title peut servir, par exemple, à étiqueter le signet. Notez que plusieurs signets peuvent être définis dans chaque document.

Les auteurs peuvent vouloir définir d'autres types de lien non décrits dans cette spécification. Pour ce faire, ils devraient utiliser un profil afin de citer les conventions employées pour définir les types de lien. Veuillez considérer l'attribut profile de l'élément head pour plus de renseignements.

Notez que, dans une version future de cette spécification, le groupe de travail prévoit de faire évoluer ce type de nom de simple à qualifié (QName).

MediaDesc

L'attribut MediaDesc est une liste de descripteurs de média, séparés par des virgules. Voici une liste des descripteurs de média reconnus :

screen
Prévu pour les écrans d'ordinateur non paginés (non-paged).
tty
Prévu pour les médias utilisant une grille de caractère à chasse fixe, tels que les télétypes, les terminaux ou les appareils portables aux capacités d'affichage limitées.
tv
Prévu pour les appareils de type téléviseur (résolution faible, en couleur, à défilement limité).
projection
Prévu pour les projecteurs.
handheld
Prévu pour les appareils de poche (petit écran, monochrome, images matricielles, bande passante limitée).
print
Prévu pour un matériau paginé, opaque, et pour les documents vus à l'écran en mode aperçu d'impression (print preview mode).
braille
Prévu pour les appareils à retour tactile en braille.
aural
Prévu pour les appareils de synthèse de la parole (speech synthesizers).
all
Convient à tous les appareils.

Les versions futures de XHTML pourront introduire de nouvelles valeurs et admettre des valeurs paramétrées. Afin de faciliter l'introduction de ces extensions, les agents utilisateurs conformes doivent être capable d'interpréter la valeur de l'attribut media comme suit :

  1. La valeur est une liste d'entrées, séparées par des virgules. Par exemple :
    media="screen, 3d-glasses, print and resolution > 90dpi"
    

    est mis en correspondance avec :

    "screen"
    "3d-glasses"
    "print and resolution > 90dpi"
    
  2. Chaque entrée est tronquée juste avant le premier caractère qui n'est pas une lettre US-ASCII [a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), un chiffre [0-9] (hex 30-39) ou un trait d'union [-] (hex 2d). Dans l'exemple, cela donne :
    "screen"
    "3d-glasses"
    "print"
    
  3. Une comparaison indépendante de la casse est alors réalisée avec le jeu des types de média défini ci-dessus. Les agents utilisateurs peuvent ignorer les entrées qui ne correspondent pas. Dans l'exemple, il nous reste screen et print.

Note. Les feuilles de style peuvent contenir des variations en fonction des médias (par exemple, la construction CSS @media). Dans de tels cas, il convient peut-être d'utiliser "media=all".

MultiLength La valeur peut être de type Length ou une longueur relative. Une longueur relative est de la forme "i*", où i est un entier. Lors de la répartition de l'espace entre les éléments en concurrence pour cet espace, les agents utilisateurs allouent d'abord les longueurs en pixels et en pourcentage, puis divisent l'espace disponible restant entre les longueurs relatives. Chaque longueur relative reçoit une portion de l'espace disponible qui est proportionnelle à l'entier qui précède le caractère "*". La valeur "*" équivaut à "1*". Donc, si 60 pixels d'espace sont disponibles après que l'agent utilisateur a alloué l'espace en pixels et en pourcentage, et que les longueurs relatives concurrentes sont "1*", "2*" et "3*", la longueur 1* recevra 10 pixels, la longueur 2* recevra 20 pixels et la longueur 3* recevra 30 pixels.
MultiLengths Une liste d'éléments de type MultiLength, séparés par des virgules.
Number Un ou plusieurs chiffres.
Pixels La valeur est un entier qui représente le nombre de pixels du canevas (écran, feuille). Ainsi la valeur "50" signifie cinquante pixels. Pour une information normative à propos de la définition d'un pixel, veuillez consulter [CSS2].
QName Un nom qualifié d'un espace de noms [XMLNS]. Cf. QName pour une définition formelle.
QNames Une liste de types QName, séparés par des espaces, comme défini ci-dessus.
Script

Les données de script peuvent être le contenu de l'élément script ou la valeur d'attributs d'événement intrinsèques. Les agents utilisateurs ne doivent pas évaluer les données de script comme étant du balisage HTML mais à la place les passer en tant que données au moteur de script.

La sensibilité à la casse (case-sensitivity) des données de script dépendent du langage de script.

Veuillez noter que les données de script qui sont le contenu de l'élément ne peuvent pas contenir de références de caractère, au contraire des données qui constituent la valeur d'un attribut.

Shape La forme d'une région.
Text Des données textuelles arbitraires, probablement destinées à une lecture humaine.
URI Un appel d'adresse URI (URI reference), comme défini par le type anyURI dans XMLSCHEMA.
URIs Une liste d'adresses URI, séparées par des espaces, comme défini ci-dessus.

4.4. Un exemple de définition de module abstrait

Cette section est informative.

Cette section définit un module abstrait en exemple d'utilisation des règles de syntaxe décrites ci-dessus. Comme cet exemple cherche à utiliser l'ensemble des divers éléments syntaxiques définis, il est assez compliqué. Les définitions de modules typiques seraient beaucoup plus simples. Enfin, notez que ce module référence la collection d'attributs Common. C'est une collection définie dans la spécification XHTML Modularization, qui comprend tous les attributs de base utiles à la plupart des éléments.

4.4.1. Module de ski XHTML

Le module de ski XHTML définit le balisage employé pour décrire les aspects d'un hébergement de ski. Les éléments et attributs définis dans ce module sont :

Élements Attributs Modèle de contenu minimal
resort Common, href (CDATA) description, Aspen+
lodge Common description, (Aspen - lift)+
lift Common, href description?
chalet Common, href description?
room Common, href description?
lobby Common, href description?
fireplace Common, href description?
description Common PCDATA*

Ce module définit également le jeu de contenu Aspen qui a pour modèle de contenu minimal lodge | lift | chalet | room | lobby | fireplace.

[Note du traducteur]
Aspen est une station de sports d'hiver aux États-Unis.
Les noms des éléments traduits éclaireront peut-être mieux l'exemple :
resort : station (de sports d'hiver)
lodge : bâtiment central (de la station)
lift : remontées mécaniques
chalet : chalet
room : chambre
lobby : salon
fireplace : cheminée
[Fin de la note]