2017-09-17 7 views

Répondre

1

Les - et O (lettre O) caractères sont des indicateurs d'omission d'étiquette SGML, et déclare (à un analyseur SGML) que le début et/ou balise de fin, respectivement, pour un élément peut être omis (si O) ou doit être présent (si -). Le premier caractère - ou O est pour l'étiquette d'élément de départ, et le second est pour l'étiquette d'élément d'extrémité.

Par exemple, un document HTML valide peut ressembler à ceci (où le « identifiant public » est réduit à ... pour plus de clarté):

<!DOCTYPE html PUBLIC "..."> 
<title>A valid HTML document</title> 
<p>Body Text 

SGML utilise un élément (contenant DTD HTML et des attributs des déclarations pour HTML) pour en déduire les balises omises, que le balisage exemple est analysé comme

<!DOCTYPE html PUBLIC "..."> 
<html> 
    <head> 
    <title>A valid HTML document</title> 
    </head> 
    <body> 
    <p>Body Text</p> 
    </body> 
</html> 

des déclarations d'éléments avec des indicateurs d'omission d'étiquette qui ferait un analyseur SGML arrivent au balisage inférée et canoniques sont

<!ELEMENT html O O (head,body)> 
<!ELEMENT head O O (title)> 
<!ELEMENT body O O (#PCDATA,p)+> 
<!ELEMENT p - O (#PCDATA)> 

Le cas de l'élément br est spécial, car il est un élément EMPTY (HTML appelle ces « éléments vides », et a ceux supplémentaires tels que img et hr). Un élément avec le contenu déclaré EMPTY, en langage SGML traditionnel, n'est pas autorisé à avoir une étiquette d'élément final, et l'utilisation d'un indicateur d'omission d'étiquette de fin est redondante ou même trompeuse.

Pour une DTD SGML complète pour HTML moderne (W3C HTML 5 et 5.1), voir mon projet/document lié par http://sgmljs.net/blog/blog1701.html.

Notez que HTML, depuis la version 5, ne publie plus de DTD SGML ni d'autre grammaire formelle, et ne référence pas formellement la norme SGML (ISO 8879) comme référence normative. La déclaration sur laquelle vous avez trébuché provient probablement de l'ancienne spécification HTML 4.

Edit: voulait également préciser que pour l'utilisation <br/>en XML, vous ne devez pas déclarer EMPTY; en fait, vous n'avez rien à déclarer; aussi, puisque vous l'avez demandé, vous pouvez aller à (notre site) http://sgmljs.net/docs/sgmlrefman.html pour en savoir plus sur SGML