Le langage SGML/Syntaxe
Les documents au format SGML décrivent une structure arborescente où chaque nœud contient du texte de contenu et plusieurs autres nœuds.
La syntaxe se base sur quelques éléments décrits brièvement dans cette section et de manière plus détaillée dans les chapitres suivants.
Élément/balise.
Un élément ou balise définit un conteneur.
Le premier élément est l'élément racine du document, et contient tous les autres éléments, directement ou indirectement.
La syntaxe utilise les signes < et > pour encadrer le nom de l'élément.
Exemple :
<document>
Cette première syntaxe est celle de l'ouverture d'un élément.
Après son ouverture, le contenu de l'élément est décrit : texte, éléments imbriqués, ...
Puis l'élément est fermé en utilisant la syntaxe de fermeture.
Cette syntaxe est presque identique à celle de l'ouverture, excepté qu'il n'y a aucun attribut et que le nom est précédé d'un caractère slash.
Exemple :
<document>
Le contenu de cet exemple de description d'un document,
suivi de la fermeture de l'élément à la ligne suivante.
</document>
Ce chapitre donne un bref aperçu de la syntaxe ; pour plus de détails sur la syntaxe des éléments, voir le chapitre ../Éléments/, et ../Attributs/ pour leurs attributs.
Attribut.
Un élément peut avoir des attributs afin de spécifier des informations liées à l'élément lui-même (par exemple, un identificateur unique permettant de retrouver cet élément).
Chaque attribut a un nom et une valeur spécifiés avec la syntaxe codice_1.
Ils doivent être placés sur la balise d'ouverture de l'élément, après le nom et avant le caractère >.
Exemple :
<document type="exemple">
L'élément contenant ce texte possède un attribut type dont la valeur est exemple.
</document>
Ce chapitre donne un bref aperçu de la syntaxe ; pour plus de détails sur la syntaxe des éléments, voir le chapitre ../Attributs/.
Commentaire.
Les commentaires sont utiles pour expliquer la syntaxe ou le contenu sans que les explications appartiennent au contenu du document.
Leur syntaxe est basée sur celles des balises spéciales en encadrant le texte du commentaire entre codice_2 et codice_3.
Exemple :
<!-- Un commentaire simple. -->
Balises spéciales.
Les balises spéciales permettent d'insérer des informations n’appartenant pas au contenu du document lui-même.
Les commentaires vus précédemment sont une forme de balises spéciales à ignorer.
Le contenu des balises spéciales est inclut entre codice_4 et codice_5.
La première balise spéciale que l'on trouve en général est celle du DOCTYPE spécifiant le type du document et le ../DTD/ utilisable pour l'interpréter.
Cette balise est placée en première position dans le document.
Exemple :
<!DOCTYPE document system>
<document type="exemple">
L'élément contenant ce texte possède un attribut type dont la valeur est exemple.
</document>
Structure globale.
Les sections précédentes décrivent les différents éléments de la syntaxe sans détails.
L'exemple de document ci-dessous utilise la syntaxe vue dans ce chapitre, avec imbrication d'éléments, attributs et commentaires.
La syntaxe est détaillée dans les chapitres suivants.
<!DOCTYPE document system>
<document type="exemple">
 <!-- L'élément contenant ce texte possède un attribut type dont la valeur est exemple. -->
 Le texte ici pour l'élément document.
 <chapitre>Ici un texte pour décrire un chapitre.</chapitre>
 <chapitre>Ici un texte pour décrire un autre chapitre.</chapitre>
 <chapitre>et un autre chapitre...</chapitre>
 <chapitre type="annexe">Ici un texte pour décrire un chapitre de type annexe.</chapitre>
 <auteur>
 <!-- Détails sur le ou les auteurs : -->
 <nom>Les contributeurs de fr.wikibooks.org</nom>
 <url>https://fr.wikibooks.org/wiki/Le_langage_SGML/Syntaxe</url>
 </auteur>
</document>

Le langage SGML/Liens et bibliographie
Ce chapitre présente quelques ressources supplémentaires relatives au sujet.

Le langage SGML/DTD
SGML facilite le développement de types de documents ou de langages de marquage spécialisés.
Une application SGML est un ensemble de règles pour l'utilisation d'un ou plusieurs types de documents.
Elle est généralement développée après identification des besoins d'échanges formels de données dans une communauté, un secteur d'activité, ...
Une définition de type de document est composée de deux parties : une partie formelle en SGML appelée DTD, et un ensemble de conventions d'application.
DTD.
DTD signifie "Document Type Definition" en anglais, c'est à dire Définition de Type de Document en français.
Il s'agit d'un fichier définissant la syntaxe des documents, et permet donc leur validation :
La syntaxe des DTD est définie par la spécification du SGML.
Une DTD permet la validation de documents SGML, mais aussi de documents HTML, XML et XHTML.
Cependant, la DTD du HTML est normalisée, et celle d'un document XML doit respecter les restrictions et contraintes de la syntaxe XML.
Chaque DTD définit une classe de documents à laquelle sont rattachées toutes les instances similaires, sous la forme d'une grammaire donnant la liste des éléments (ou balises), des attributs, leur contenu et leur agencement, ainsi que le vocabulaire supplémentaire sous la forme d'une liste d'entités de caractère. 
Exemple :
<!doctype Memo [
<!element Memo - - (Salutation, P*, Closing?)>
<!element Salutation O O (Date & To & Address?)>
<!element (P|Closing|To|Address) - O (#PCDATA)>
<!element Date - O EMPTY>
<!attlist Date
 numeric CDATA #REQUIRED
Cet exemple contient 4 déclarations d'éléments pour un type de document nommé Memo.
La séquence décrivant le contenu des éléments est entre parenthèses.
Elle est précédée de deux caractères qui spécifient respectivement si la balise d'ouverture et la balise de fermeture sont obligatoires ou optionnelles :
La notation codice_3 indique un contenu textuel.
La notation codice_4 (sans parenthèses) indique un contenu vide.

Le langage SGML/Éléments
Un élément ou balise définit un conteneur de données, un nœud de la structure arborescente du document.
Le premier élément est l'élément racine du document, et contient tous les autres éléments, directement ou indirectement.
Un élément peut être attaché à des informations spécifiques sous forme d'attributs qui seront vus en détails dans le chapitre suivant.
Le contenu d'un élément commence après la balise d'ouverture d'un élément et se termine avant la balise de fermeture.
Balise d'ouverture.
La syntaxe utilise les signes < et > pour encadrer le nom de l'élément.
Exemple :
<document>
L'élément peut avoir des attributs afin de spécifier des informations qui lui sont liées à l'élément lui-même (par exemple, un identificateur unique permettant de retrouver cet élément).
Chaque attribut a un nom et une valeur spécifiés avec la syntaxe codice_1.
Ils doivent être placés sur la balise d'ouverture de l'élément, après le nom et avant le caractère >.
Exemple :
<document type="exemple">
Balise de fermeture.
L'élément est fermé en utilisant une balise de fermeture.
Sa syntaxe est presque identique à celle de l'ouverture, excepté qu'il n'y a aucun attribut et que le nom est précédé d'un caractère slash.
Exemple :
<document>
Le contenu de cet exemple de description d'un document,
suivi de la fermeture de l'élément à la ligne suivante.
</document>
Selon les règles définies par le ../DTD/ pour chaque élément :
<document>
Le contenu de cet exemple de description d'un document,
suivi de la fermeture de l'élément à la ligne suivante.
Fermeture implicite.
La fermeture implicite de l'élément rend l'utilisation d'une balise de fermeture inutile.
Dans la ../DTD/, la définition des éléments contient un caractère concernant la présence de la balise de fermeture :
En HTML certains éléments n'ayant aucun contenu (mais des attributs selon les cas) sont fermés implicitement :
<img> <p> <br> <hr> <meta>
En XML et en XHTML, la fermeture implicite n'est pas autorisée : tout élément ouvert doit être fermé explicitement.