Le sezioni seguenti contengono la definizione formale SGML di HTML 4.0. Essa comprende la Dichiarazione SGML, la Definizione del Tipo di Documento (DTD), e le Referenze alle entità carattere, oltre ad un Catalogo SGML esemplificativo.
Questi file sono disponibili anche in formato ASCII come sotto elencato:
Molti autori si basano su un insieme limitato di interpreti per controllare i documenti che producono, assumendo che se gli interpreti possono presentare i loro documenti, i documenti sono validi. Sfortunatamente questo è un mezzo altamente inefficace per verificare la validità di un documento proprio perché gli interpreti sono concepiti per trattare documenti non validi riproducendoli come meglio possono onde evitare di deludere gli utenti.
Per una migliore validazione si dovrebbero controllare i documenti prodotti usando un analizzatore SGML quale nsgmls (si veda [SP]), allo scopo di verificare che i documenti siano conformi alla DTD HTML 4.0. Se la dichiarazione del tipo di documento del proprio documento include un URI, e il parser SGML disponibile supporta questo tipo di identificatore di sistema, esso rintraccerà direttamente la DTD. Altrimenti si può utilizzare il catalogo SGML esemplificativo accluso. Esso assume che la DTD sia stata memorizzata come file "strict.dtd" e che le entità si trovino nei file "HTMLlat1.ent", "HTMLsymbol.ent" e "HTMLspecial.ent". In ogni caso, ci si assicuri che l'analizzatore SGML disponibile sia capace di gestire i caratteri Unicode. Si consulti la documentazione dello strumento di validazione disponibile per ulteriori dettagli.
Si faccia attenzione al fatto che una tale validazione, sebbene utile ed altamente consigliata, non garantisce che un documento sia pienamente conforme alle Specifiche di HTML 4.0. Questo perché un analizzatore SGML si basa esclusivamente sulla DTD SGML fornitagli, che non descrive tutti gli aspetti di un documento HTML 4.0 valido. Specificatamente, un analizzatore SGML assicura che la sintassi, la struttura, la lista di elementi, e i loro attributi siano validi. Ma, per esempio, non può scoprire errori quali l'assegnamento di un valore non valido all'attributo width di un elemento IMG (e.g., un valore quale "pinco pallino" o "12.5"). Sebbene le Specifiche vincolino il valore di questo attributo ad un "numero intero rappresentante una lunghezza in pixel", la DTD prescrive soltanto che esso sia CDATA, che di fatto consente qualsiasi valore. Solo un programma specializzato potrebbe catturare le Specifiche complete di HTML 4.0.
Nonostante ciò, questo tipo di validazione è tuttavia altamente raccomandato poiché permette l'individuazione di una grande quantità di errori che rendono i documenti non validi.
Questo catalogo include la direttiva "override" per assicurare che software analizzatore quale nsgmls usi preferenzialmente identificatori di tipo pubblico in luogo di identificatori di sistema. Questo significa che gli utenti non hanno bisogno di essere connessi al Web quando recuperano identificatori di sistema basati su URI.
OVERRIDE YES PUBLIC "-//W3C//DTD HTML 4.0//EN" strict.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" loose.dtd PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" frameset.dtd PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent