3 Sur SGML et HTML

Cette section du document que vous êtes familier avec SGML et en apprendre davantage sur sa relation avec HTML. Description complète de SGML ne sont pas inclus dans cette norme (voir. [ISO8879] ).

3.1 Introduction à SGML

SGML - un système pour déterminer les langages de balisage . Les auteurs balisent leurs documents, présentant des informations sur la structure, la représentation et la sémantique dans un document unique. HTML est un des exemples de langage de balisage. Voici un exemple d'un document dans la langue de HTML:

  <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML>
  <HEAD>
  <TITLE> Mon premier document dans la langue de HTML </ TITLE>
  </ HEAD>
  <BODY>
  <P> Bonjour!
  </ BODY>
 </ HTML>

Un document HTML est constitué d'une section d'en-tête (ici - entre les balises <HEAD> et </ HEAD>) et le corps (ici - entre les titres <BODY> et </ BODY>). Titre du document est affiché dans l'en-tête (ainsi que d'autres informations sur le document) et le contenu d'un document stocké dans le corps. Dans cet exemple, le corps de ce document ne contient qu'un seul point, marqué <P>.

Chaque langage de balisage défini en SGML, appelée application SGML. application de SGML est caractérisé par:

  1. Annonce de SGML . SGML ad spécifie quels caractères et délimiteurs peuvent apparaître dans l'application.
  2. Document Type Definition (DTD) (DTD) . DTD définit la syntaxe des constructions de balisage. DTD peut inclure des définitions supplémentaires, par exemple, la combinaison de symboles de référence .
  3. La spécification décrivant la sémantique utilisée dans le balisage. Cette spécification impose également des restrictions de syntaxe qui ne peuvent être exprimées en utilisant la DTD.
  4. Des exemplaires du document contenant les données (contenu) et le balisage. Chaque instance contient une référence à la DTD, qui devrait être utilisé pour l'interprétation.

La spécification HTML 4.0 comprend SGML classé trois définitions de type de document (voir la description d'entre eux. Voir les informations de version est le HTML ) et une liste de références de caractères .

3.2 Construction SGML, HTML utilisé

Dans les sections suivantes, vous allez rencontrer des constructions SGML utilisées en HTML.

L'annexe énumère quelques caractéristiques SGML qui ne sont pas pris en charge par des outils HTML et les agents utilisateurs et dont l'utilisation doit être évitée.

3.2.1 éléments

Document Type Definition SGML déclare types d'éléments qui représentent des structures ou comportement souhaité. HTML inclut les types d'éléments qui représentent des paragraphes, des liens hypertextes, des listes, des tableaux, des images, etc.

Chaque déclaration de type d'élément comprend généralement trois parties: une balise de début, le contenu et la balise de fin.

Le nom de l' élément est affiché dans la balise de début (écrit <element-name>) et balise de fin (écrit </ element-name>); ne pas oublier la barre oblique avant le nom de l'élément dans la balise de fin. Par exemple, les balises de début et de fin élément UL déterminer la liste:

  <UL>
 <LI> <P> ... dans la liste 1 ... <LI> <P> ... élément de liste 2 ... </ UL>

Certains types d'éléments HTML permettent aux auteurs de omettent les balises de fin (par exemple, les types d'éléments P et la LI ). Plusieurs types d'éléments vous permettent également d'omettre les premières balises ; par exemple, la HEAD et BODY . HTML DTD indique pour chaque type d'élément si les balises de début et de fin requis.

Certains types d'éléments HTML ont pas de contenu. Par exemple, l'élément de la transition vers la ligne suivante BR n'a pas de contenu; son rôle - interrompre la chaîne de texte. Ces vides éléments ont jamais balises de fin. Déterminer le type de document et le texte de la spécification indiquer si un type vide élément (n'a pas de contenu) ou, si elle peut avoir un contenu, ce qui est contenu acceptable.

Les noms des éléments sont toujours sensibles à la casse.

Pour plus d'informations sur les règles régissant les éléments (par exemple, ils peuvent être imbriquées correctement, la balise de fin ferme tous balise de début omis jusqu'à ce que la balise de début correspondante (section 7.5.1), etc.). Voir la norme SGML.

Par exemple, le paragraphe suivant:

  <P> Ceci est le premier paragraphe. </ P>
 ... Un élément de bloc ...
 

peut être remplacé sans balise de fin:

  <P> Ceci est le premier paragraphe.
 ... Un élément de bloc ...
 

depuis la balise de début <P> fermé suivant élément de bloc. De même, si un élément de paragraphe inclus dans le bloc, par exemple:

  <DIV>
 <P> Ceci est un paragraphe.
 </ DIV>

tag d'extrémité comprend un élément de bloc (ici - </ DIV>) sert la balise de début open balise de fin <P>.

Elements - ce ne sont pas les tags. Certains se réfèrent à des éléments de balises (par exemple, "tag P"). Rappelez - vous que l'élément - est une chose, et la balise (début ou fin, n'a pas d' importance) - autre. Par exemple, l' élément HEAD est toujours présent, même si les balises de début et de fin HEAD absent.

Tous les types d'éléments déclarés dans cette spécification sont répertoriés dans l' entrée d'index .

3.2.2 Attributs

Avec des propriétés des éléments peuvent être associés, appelés attributs , qui peuvent avoir des valeurs (standard ou définies par les auteurs ou les scripts). paires attribut / valeur sont placés avant la parenthèse fermante ">" tag élément initial. L'élément de balise de début peut être un certain nombre de (valides) paires attribut / valeur, séparés par des espaces. Ils peuvent apparaître dans un ordre quelconque.

Dans cet exemple, l'élément H1 attribut défini id :

 <Id H1 = "section1">
 Ce titre spécifique, grâce à l'attribut id
 </ H1> 

Par défaut, SGML exige que toutes les valeurs d'attributs sont séparés par un double (ASCII décimal 34) ou des guillemets simples (ASCII de code décimal 39). Les guillemets simples peuvent être inclus dans la valeur de l'attribut, si la valeur est séparée par des guillemets doubles, et vice versa. Les auteurs peuvent également utiliser des références de caractères numériques pour représenter doubles (& # 34;) et citations simples (& # 39;). Pour guillemets auteurs peuvent également utiliser une combinaison de références à des symboles & quot;.

Dans certains cas, les auteurs peuvent spécifier la valeur d'un attribut sans guillemets. La valeur d'attribut ne peut contenir que des lettres (az et AZ), des chiffres (0-9), des tirets (ASCII décimal 45) et les points (ASCII décimaux 46). Il est recommandé de toujours utiliser des guillemets.

Les noms d' attribut sont toujours sensibles à la casse

Les valeurs d'attribut sont généralement sensibles à la casse. La définition de chaque attribut dans la liste d'attributs indique si la valeur est sensible à la casse.

Liste de tous les attributs définis dans cette spécification sont répertoriés dans l'index d'attribut .

3.2.3 Les références de caractères

Les références de caractères - sont des noms numériques ou symboliques de caractères qui peuvent être inclus dans le document HTML. Ils sont pratiques pour se référer à des caractères rarement utilisés ou des caractères qui sont difficiles ou impossibles à entrer dans les documents des outils de développement. Vous verrez des références de caractères dans ce document; ils commencent par un "&" et se terminent par un point-virgule (;). Voici quelques exemples:

  • "& Lt;" est un signe <.
  • "& Gt;" Il représente le signe>.
  • "& Quot;" Il est un signe. "
  • «& # 229;" (Décimal) représente la lettre "a" avec un cercle sur le dessus.
  • "& # 1048;" (Décimal) représente la lettre cyrillique "I".
  • "& # X6C34"; (Hexadécimal) représente le signe chinois de l'eau.

Les références de caractères au format HTML sont discutés en détail plus loin dans cette section sous la rubrique jeu de documents HTML de caractère . Le cahier des charges contient également une liste de références de caractères qui peuvent être utilisés dans les documents en HTML 4.0.

3.2.4 Commentaires

Les commentaires en HTML ont la syntaxe suivante:

 <! - Ceci est un commentaire ->
 <! - Ceci est également un commentaire,
  il faut quelques lignes ->

Les problèmes entre la marque ouverture de délimiteur ( "<!") Et le commentaire ouverture de délimiteur ( "-") ne sont pas autorisés, mais ils peuvent être utilisés entre la clôture délimiteur de commentaires ( "-") et la fermeture de balisage délimiteur ( ">"). Une erreur courante consiste à inclure le transfert de chaînes de caractères ( "---") dans le commentaire. Doit être évité dans les commentaires de deux ou plusieurs traits d'union.

Les informations contenues dans les commentaires n'a pas de signification particulière (par exemple, les références de caractères ne sont pas interprétées).

3.3 Comment lire la DTD HTML

Chaque déclaration d'élément et un attribut dans cette spécification est accompagnée d'un fragment de sa définition de type de document . Nous avons décidé d'inclure les fragments de DTD dans le cahier des charges plutôt que de chercher un moyen plus abordable, mais plus et moins précises de décrire les propriétés des éléments. Avec les suivants tutoriel lecteurs qui ne sont pas familiers avec de SGML, peuvent apprendre à lire la DTD et comprendre les détails techniques de la spécification HTML.

3.3.1 Commentaires DTD

Dans une DTD, les commentaires peuvent étendre sur plusieurs lignes. Dans une DTD, les commentaires sont séparés par une paire de balises "-", par exemple,

 <ELEMENT PARAM - O EMPTY - valeur de la propriété nommée ->
Ici, le commentaire "valeur de la propriété nommée" explique l'utilisation du type d'élément PARAM . Les commentaires dans la DTD sont informatives.

3.3.2 Définition des combinaisons de paramètres

DTD HTML commence par une série de définitions de combinaisons de paramètres. Certaines combinaisons de paramètres définit une macro qui peut être référencé partout dans le DTD. Ces macros ne sont pas affichées dans les documents HTML, ils apparaissent seulement dans la DTD. D' autres types de macros, appelées références de caractères , peuvent être utilisés dans le texte d'un document HTML ou dans les valeurs d'attribut.

Quand une combinaison des paramètres visés au DTD par nom, elle tourne dans une rangée.

Définir les paramètres de la combinaison commence par le mot - clé <! ENTITY%, suivi du nom de l' entité, la chaîne citée dans laquelle l'entité est définie, et enfin une fermeture>. Copies paramètre combinaisons commencent par un signe «%» dans la DTD, alors il est une combinaison du nom et se termine avec une option caractère ";".

L'exemple suivant détermine la ligne va se dérouler "% fontstyle;".

 <ENTITY% fontstyle "TT | I | B | BIG | SMALL"!>

Line, qui a lieu une combinaison de paramètres peut contenir les noms d'autres combinaisons de paramètres. Ces noms sont déployés de manière récursive. Dans cet exemple, "% en ligne"; la combinaison comprend un paramètre de combinaison "% fontstyle;", "% locution;", "% spécial"; et "formctrl% de;».

 <ENTITY% inline "#PCDATA |% fontstyle; |% phrase; |% spécial; |% formctrl;"!>

Vous verrez souvent dans le HTML DTD deux entités du DTD: "bloc%;" "Inline%;". Ils sont utilisés lorsque le modèle de contenu comprend des éléments de niveau bloc et éléments en ligne , respectivement (définis dans la section de la structure globale du document HTML ).

3.3.3 éléments publicitaires

DTD HTML comprend les annonce types d'éléments et de leurs attributs. Ad commence avec le mot-clé <! ELEMENT et se termine avec un>. Entre eux doit contenir:

  1. Nom de l'élément.
  2. Requis si la balise de fin de l'élément. Deux symboles de transfert après le nom d'élément signifie que les balises de début et de fin sont obligatoires. Un trait d'union suivi de la lettre «O» indique que la balise de fin peut être omise. Deux lettres "O" indique qu'il est possible d'omettre le début et les balises de fin.
  3. Le contenu de l'élément, le cas échéant. La teneur admissible de l'élément est appelé le modèle de contenu. Les types d'éléments qui ont pas de contenu sont appelés éléments vides . Le modèle de contenu pour ces types d'éléments est déclarée en utilisant le mot-clé "VIDE".

Dans cet exemple:

  <ELEMENT UL -! - (LI) +>
  • Déclarez le type élément UL.
  • Deux tiret indique que la balise de début <UL> et la balise de fin </ UL> pour cet élément est obligatoire.
  • Le modèle de contenu pour ce type d'élément - "au moins un élément de LI". Ce qui suit explique comment spécifier le modèle de contenu.

Cet exemple montre la déclaration d'un type d'élément vide:

  <ELEMENT IMG - O EMPTY>
  • Déclare l'IMG de type d'élément.
  • Hyphen, suivi de la lettre "O", indique que la balise de fin peut être omis, mais si le modèle de contenu - "VIDE", cette règle est renforcée, et la balise de fin doit être omis.
  • Mot-clé "VIDE" indique que des copies de ce type ne devraient avoir aucun contenu.

Définitions du modèle de contenu  

Le modèle de contenu décrit ce qui peut être contenu dans une instance du type d'élément. Définitions du contenu du modèle peuvent inclure:

  • Les noms des types d'éléments autorisés ou interdits (par exemple, l' élément UL contient des instances de l'élément de type LI , et le type d'élément P ne peut pas inclure d' autres éléments de P ).
  • combinaisons DTD (par exemple, l'élément LABEL comprennent des combinaisons de copies paramètres "% inline;").
  • Le texte du document (indiquer SGML-design "#PCDATA"). Le texte peut inclure des références de caractères . Rappelez-vous qu'ils commencent par & et se terminent par un point-virgule (par exemple, "Herg & eacute; 'de les aventures de Tintin" contient une référence à une combinaison de caractères pour afficher le caractère "e avec un accent").

élément modèle de contenu est spécifié en utilisant la syntaxe suivante:

(...)
Divise groupe.
A | B
Survient A ou B, mais pas les deux.
A, B
Il doit y avoir A et B dans cet ordre.
A & B
A et B se produisent dans un ordre quelconque.
A?
Un produit zéro ou une fois.
A *
Un produit zéro ou plusieurs fois.
A +
A se produit une ou plusieurs fois.

Voici quelques exemples de la DTD HTML:

  <ELEMENT UL -! - (LI) +>

Elément UL doit contenir un ou plusieurs éléments de la LI .

  <ELEMENT DL - - (DT | DD)! +>

Element DL doit contenir un ou plusieurs éléments de DT ou DD dans un ordre quelconque.

  <ELEMENT OPTION - O (#PCDATA)>

Element OPTION ne peut contenir que du texte et des entités, telles que le & amp; - Elle est déterminée par le type de données SGML #PCDATA.

Certains types d'éléments HTML utilisent une fonctionnalité SGML supplémentaire pour exclure des éléments du modèle de contenu. En excluant les éléments précédés par trait d' union. exclusions explicites ont la priorité sur les éléments valides.

Dans cet exemple, le groupe - (A) signifie que l'élément A ne peut pas être dans l'autre élément A (à savoir, les liaisons peuvent ne pas être imbriquées).

  <ELEMENT A - - (% en ligne;)! * - (A)>

Rappelez - vous que le type de l'élément A fait partie de la DTD combinaisons de paramètres "% inline;», mais exclut explicitement l'expression - (A).

De même, la déclaration d'élément suivant le type FORM interdit les formes imbriquées:

  <FORM ELEMENT - - (bloc%; | SCRIPT) + - (FORM)>

3.3.4 Annonces attributs

attributs d'annonces , qui peuvent avoir un élément commence avec le mot - clé <! ATTLIST. Il est suivi par le nom de l'élément avec un point d'interrogation, une liste de définitions d'attribut, et une fermeture symbole>. Chaque définition d'attribut - un triple, qui détermine:

  • Le nom de l'attribut.
  • Tapez la valeur d'attribut ou un ensemble explicite de valeurs valides. Les valeurs définies explicitement en utilisant la DTD, insensible. En savoir plus sur les types de valeurs d'attributs, voir. Section les types de données de base du HTML .
  • L'attribut par défaut implicite (mot - clé "#IMPLIED"), qui est, la valeur par défaut est fixé par l'agent utilisateur (dans certains cas , à l' aide de l'héritage à partir d' éléments de base ); toujours nécessaire (mot - clé "#REQUIRED"); ou fixe valeur donnée (mot - clé "#FIXED"). Certaines définitions d'attributs spécifient explicitement une valeur par défaut de l'attribut.

Dans cet exemple, l'attribut nom spécifié pour l'élément MAP . Attribut à est obligatoire pour cet élément.

 <! ATTLIST CARTE
  nom CDATA #IMPLIED
  >

Tapez les valeurs qui sont autorisées pour cet attribut est donnée en tant que type de données CDATA, SGML. A CDATA - ceci est le texte qui peut contenir des références de caractères .

Pour plus d' informations sur les types de données, "CDATA", "NAME", "ID" , et d' autres. Cm. Section des types de données du HTML .

Les exemples suivants illustrent plusieurs définitions d'attribut:

 NUMÉRO rowspan 1 - nombre de lignes couvertes par une cellule -
 http-equiv NOM #IMPLIED - réponse HTTP nom d'en-tête -
 id ID #IMPLIED - ID unique dans un document - 
 valign (top | milieu | bottom | baseline) #IMPLIED

Rowspan attribuer à la valeur désirée de type NUMBER. La valeur par défaut est donnée explicitement - "1". Pour option attribut http-equiv valeurs de type nécessaire NOM. Pour un identifiant facultatif des valeurs d'attribut sont nécessaires telles que l' ID. L'attribut valign en option est limitée aux valeurs de l'ensemble {top, middle, bottom, baseline }.

Combinaisons DTD les définitions d'attributs  

Définition des attributs peuvent également contenir des références à des paramètres de combinaison.

Dans cet exemple, nous voyons que la liste des définitions pour le membre des attributs LINK commence par une combinaison de paramètres "% attrs;».

  <L'ELEMENT! Le LINK - A propos de VIDE Le - lien indépendant du dispositif ->
 <! ATTLIST LINK
  % attrs;
  - % Coreattrs , % i18n , % events -
  le charset % Charset;
  #IMPLIED - Le codage du document lié -
  href l'URI%;
  #IMPLIED - URI document lié -
  le hreflang % LanguageCode;
  #IMPLIED - Le code de langue -
  du type % ContentType;
  #IMPLIED - Le type de contenu recommandé -
  les rel % LinkTypes;
  #IMPLIED - Types Lien pour aller de l'avant -
  les rev % LinkTypes;
  #IMPLIED - Types Lien pour revenir -
  media % MediaDesc;
  #IMPLIED - Pour la génération de ce dispositif -
  >

Balise de début: requise, Balise de fin: interdite

La combinaison des paramètres "% attrs"; définies comme suit:

  <Les ENTITY% attrs "! % Coreattrs; % i18n; % des événements; ">

La combinaison de "% coreattrs;" pour déterminer les «% attrs;" Il se déroule comme suit:

  <! ENTITY% coreattrs
  " Id ID #IMPLIED - ID unique dans un document -
  classe un CDATA #IMPLIED - liste des classes séparées par des espaces -
  le style % du StyleSheet;
  #IMPLIED - Le style de l'information -
  Titre % du texte;
  #IMPLIED - L'en-tête / diffusion recommandé - "
  >

La combinaison des paramètres "% attrs"; Elle est définie par commodité, étant donné que ces attributs sont définis pour la plupart des types d'éléments HTML.

De même combinaison DTD définit les paramètres "% URI;" comme une extension de chaîne "CDATA".

  <! L'ENTITÉ% l'URI " un CDATA "
  -. Universal Resource Identifier, voir [URI]

  ->

Comme le montre cet exemple, la combinaison de paramètres «% URI»; DTD donne aux lecteurs plus d'informations que le type de données attendu pour cet attribut. Des entités similaires sont définies pour "% Color;", "% Charset;", "% Longueur;», «% Pixels»; etc.

Les attributs logiques  

Certains attributs jouent le rôle de variables booléennes (par exemple, l'attribut sélectionné pour l'élément OPTION ). Их наличие в начальном тэге элемента подразумевает, что значением атрибута является "истина". Их отсутствие означает "ложь".

Логические атрибуты могут принимать только одно значение: собственно имя атрибута (например, selected="selected" ).

В этом примере атрибут selected определяется как булев.

selected (selected) #IMPLIED -- уменьшенный интервал между элементами --

Для атрибута устанавливается значение "истина", поскольку он находится в начальном тэге элемента:

 <OPTION selected="selected">
...contents...
<OPTION>

В HTML логические атрибуты могут быть в минимизированной форме -- в начальном тэге элемента находится только значение атрибута. Таким образом, selected можно установить, написав:

<OPTION selected>

вместо:

<OPTION selected="selected">

Авторам следует знать, что многие агенты пользователей распознают только минимизированную форму логических атрибутов и не распознают полную.