Le SGML (Standard Generalized Markup Language) est une spécification ISO pour définir des langages de balisage générique pour des documents. Il s'agit d'une norme internationale pour la définition des langages de balisage. Le balisage consiste en des notations appelées balises qui spécifient la fonction d'un morceau de texte ou la manière dont il doit être affiché. Publiée sous le nom ISO 8879:1986, la norme est maintenue et révisée périodiquement sous les auspices de l'ISO / IEC JTC 1 / SC 34.
Le SGML est une norme sur la manière de spécifier un langage de balisage de document ou un ensemble de balises. Une telle spécification est elle-même une définition de type de document (DTD pour Document Type Definition). Le SGML n'est donc pas en soi un langage de balisage, mais une description de la manière d'en spécifier un. Il s'agit donc d'un métalangage.
Le SGML est utilisé pour spécifier des DTD (Document Type Definition). Une DTD définit un type de document, tel qu'un rapport, en spécifiant les éléments qui doivent apparaître dans le document (par exemple, <title>) ; et en donnant des règles pour l'utilisation des éléments du document (par exemple, un paragraphe peut apparaître dans une cellule de tableau, mais un tableau ne peut pas apparaître dans un paragraphe).
Le SGML repose sur l'idée que les documents possèdent des éléments structurels (balises) et d'autres éléments sémantiques qui peuvent être décrits sans référence à la manière dont ces éléments doivent être affichés. L'affichage réel d'un tel document peut varier, en fonction du support de sortie et des préférences stylistiques. Les documents basés sur le SGML présentent certains avantages :
- Ils peuvent être créés en pensant en termes de structure de document plutôt qu'en termes de caractéristiques d'apparence (qui peuvent changer avec le temps).
- Ils seront plus portables car un compilateur SGML peut interpréter n'importe quel document en se référant à sa définition de type de document (DTD).
- Les documents destinés à l'origine au support imprimé peuvent facilement être réadaptés à d'autres supports, comme l'écran d'un ordinateur.
Le langage utilisé par les navigateurs web, le langage HTML, est un exemple de langage basé sur le SGML. Il existe une définition de type de document pour le HTML (et lire la spécification du HTML revient à lire une version étendue de la définition de type de document).
Le SGML est quelque peu basé sur des langages de balisage généralisés antérieurs développés par IBM, notamment le General Markup Language (GML) et l'Information Structure Identification Language (ISIL).