Standard Generalized Markup Language

Le format Standard Generalized Markup Language (SGML) d'Ibm est un flux au format texte Ascii balisé utilisant une structure bien définie appelée Document Type Definition (DTD).

Une balise est un identifiant entouré par les caractères inférieur < et supérieur >. Par exemple <MaBalise>.

La structure Dtd peut être soit :

Format de la Document Type Definition utilisée par Up ! Standard Generalized Markup Language

La grammaire Dtd est un flux au format texte Ascii balisé utilisant aussi une structure bien définie.

Ainsi, la Dtd est un flux Sgml particulier.

Voici les conventions lexicales :

Voici les concepts sémantiques :

Entités

Les entités permettent de factoriser le source de la Dtd ou du flux Sgml afin de rendre des parties de celui-ci réutilisable.

Une définition d'entité est utilsable dans la Dtd si son nom est précédé du caractère pourcent % .

Enfin, une entité permet d'utiliser les caractères réservés au Sgml avec une syntaxe spéciale :

Caractère réservé.Syntaxe.
<&lt;
>&gt;
&&amp;
"&quot;
'&apos;
Caractère donné par son code hexadécimal.&#CodeHexadecimal;

Exemple : <MonElement> &lt; &gt; &amp; &quot; &apos; &#41; </MonElement>

Il est possible de définir ses propres entités qui tiennent alors lieu de paramètres. Par exemple :

<!ENTITY MonEntite SYSTEM MaValeur">

s'utilise comme cela :

<!MaBalise>Ceci est mon entité &MonEntite;</MaBalise>

Zones de texte

Une zone de texte est une portion du flux Standard Generalized Markup Language (SGML) entre deux balises imbriquées ou non. Il n'a donc aucune signification au regard de la Document Type Definition (DTD).

La zone de texte peut être soit :

Eléments

Un élément permet de structurer le flux Standard Generalized Markup Language (SGML). Il donne lieu à au plus deux balises, l'une d'ouverture, l'autre de fermeture.

Les balises d'ouverture et de fermeture sont signalées par deux caractères soit soustraction - quand l'une ou l'autre est obligatoire ou soit O quand l'une ou l'autre est facultative.

Un élément peut :

Attributs

Un élément du flux Standard Generalized Markup Language (SGML) peut posséder zéro, un ou plusieurs attributs nommés par un identifiant.

La syntaxe d'un attribut dans le flux Sgml est une affectation d'une valeur entre caractères guillemet " ou apostrophe ' au nom de l'attribut :

<MonElement MonAttributA=..." MonAttributB=..." MonAttributC=...">...</MonElement>

Un attribut possède un type :

Type.Syntaxe.
Enuméré.( Valeur1 , ... , ValeurN )
Valeur libre.CDATA
Identifiant unique.ID
Identifiant d'un attribut d'un autre élement.IDREF
Liste d'identifiants des attributs d'autres élements.IDREFS
Identificateur - Un nom.NMTOKEN
Liste d'identificateur.NMTOKENS
Nombre entier.NUMBER
Nom d'une entité Sgml.ENTITY
Liste de noms d'entités Sgml.ENTITIES
Notation Sgml.NOTATION

Un attribut possède une valeur :

Valeur.Syntaxe.
Valeur par défaut.Valeur
Dernière valeur utilisée.#CURRENT
Valeur obligatoire.#REQUIRED
Valeur facultative.#IMPLIED
Valeur imposée.#FIXED Valeur

La syntaxe pour sa déclaration dans la Dtd est : <!ATTLIST MonElement MonAttribut Type ValeurParDefaut >.

Par exemple :

<!ATTLIST MonAttributA CDATA Ma valeur">
<!ATTLIST MonAttributB ID #REQUIRED>
<!ATTLIST MonAttributC NOTATION (ImageGif|ImagePng) #REQUIRED >

Notations

Une notation permet de référencer une application externe à l'application faisant appel au décoder Standard Generalized Markup Language (SGML) dans le but de prendre en compte une valeur d'une entité marquée comme étant à ne pas analyser via l'instruction NDATA.

Par exemple :

<!NOTATION ImageGif SYSTEM file://programs/gif.exe">

Balises particulières

Voici les balises particulières :

Xml variante du Sgml

La variante la plus connue du Standard Generalized Markup Language (SGML) est le eXtended Markup Language (XML) en version 1.0 ou 1.1 du World Wide Web Consortium (W3C).

Seules ces deux versions utilisent une grammaire au format Document Type Definition (DTD).

Voici les restrictions à apporter au standard Smgl pour être compatible avec le standard Xml 1.0 ou 1.1 :

Syntaxe d'un flux Sgml

Syntaxe d'un Document Type Definition

Dtd :

ListeDeLexemesDtdOption :

ListeDeLexemesDtd :

LexemeDtd :

PrefixeEntite :

ValeurEntite :

SuiteValeurEntite :

ListeDElements :

ListeDElements2 :

OptionBalise :

ExpressionContenuElement :

NbOccurrencesOption :

ListeDAttributs :

Attribut :

TypeAttribut :

ListeDeValeursAttribut :

ValeurAttribut :

ValeurParDefautAttribut :

SuiteNotation :

Syntaxe d'un flux au format Standard Generalized Markup Language

FluxSgml :

PrologueOption :

DtdExterne :

DtdInterne :

ContenuSgmlOption :

ContenuSgml :

ContenuUnitaireSgml :

Balise :

NomBalise :

ListeDAttributsOption :

ListeDAttributs :

Attribut :

NomAttribut :

ValeurAttribut :

ContenuEntreApostrophes :

Entite :

ContenuEntreGuillemets :

SuiteBalise :

Opérateurs utilisables dans un module au format Standard Generalized Markup Language

< <-- <![ > --> ]]> - % # , | ? + * ()

Mots-clés utilisables dans un module au format Standard Generalized Markup Language

ANY ATTLIST
CDATA CURRENT
DOCTYPE
EMPTY ELEMENT ENTITY ENTITIES
FIXED
ID IDREF IMPLIED INCLUDE IGNORE
NDATA NMTOKEN NMTOKENS NOTATION NUMBER
PCDATA PUBLIC
RCDATA REQUIRED
SYSTEM

Exemple d'un flux au format Sgml

Document Type Definition externe

Source du Document Type Definition

Le fichier est par exemple ${UPS_HOME}/upsedi/resources/${UPS_LANGUAGE}/employe-sgml.dtd.

<!ELEMENT ListeEmployes - - Employe*>
<!ELEMENT Employe - - (Nom,Numero,Salaire,DateDEmbauche)>
<!ATTLIST Employe Numero - - CDATA #REQUIRED>
<!ELEMENT Nom - - #PCDATA>
<!ELEMENT Salaire - - #PCDATA>
<!ELEMENT DateDEmbauche - - #PCDATA>

Source du Standard Generalized Markup Language

<!DOCTYPE ListeEmployes SYSTEM "file://${UPS_HOME}/upsedi/resources/${UPS_LANGUAGE}/employe-sgml.dtd">
<ListeEmployes> </ListeEmployes>

Document Type Definition inclus

<!DOCTYPE ListeEmployes
<ListeEmployes> </ListeEmployes>

Exemple d'un flux au format Xml

Document Type Definition externe

Source du Document Type Definition

Le fichier est par exemple ${UPS_HOME}/upsedi/resources/${UPS_LANGUAGE}/employe-xml.dtd.

<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
<!ELEMENT ListeEmployes Employe*>
<!ELEMENT Employe (Nom,Numero,Salaire,DateDEmbauche)>
<!ATTLIST Employe Numero CDATA #REQUIRED>
<!ELEMENT Nom #PCDATA>
<!ELEMENT Salaire #PCDATA>
<!ELEMENT DateDEmbauche #PCDATA>

Source du eXtended Markup Language

<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ListeEmployes SYSTEM "file://${UPS_HOME}/upsedi/resources/${UPS_LANGUAGE}/employe-xml.dtd">
<ListeEmployes> </ListeEmployes>

Document Type Definition inclus

<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ListeEmployes
<ListeEmployes> </ListeEmployes>