Come già accennato in precedenza, il validatore che useremo è James Clark’s SGML Conforming Parser (SP).  Ma cos’è SGML? SGML è l’acronimo di Standard Generalized Markup Language ed è un sistema per la definizione di linguaggi di markup. Gli autori applicano il markup sui propri documenti rappresentando le informazioni strutturali, di formato e semantiche accanto ai contenuti. Lo stesso HTML è un linguaggio basato sui marcatori. In verità, la maggioranza dei linguaggi utilizzati in Internet è basata su SGML.

Se vuoi approfondire la conoscenza di SGML rispetto ad HTML, puoi leggere la prima sezione del tutorial su SGML presso http://www.w3.org/TR/html4/intro/sgmltut.html .

Noi, per le nostre esigenze di validazione, usiamo la versione eseguibile del validatore SP – nsgml.exe. Lo puoi scaricare su http://www.jclark.com/sp/howtoget.htm. Se hai intenzione di validare documenti XHTML, devi anche procurarti da W3 le definizioni SGML per l’XHTML 1.0, presso http://www.w3.org/TR/xhtml1/xhtml1.zip (puoi scompattarle nella cartella pubtext di SP)

Per ottenere quanto ci necessita, manderemo in esecuzione nsgml.exe con alcuni parametri:

  • Un file contenente la specifica delle entità e la definizione del linguaggio SGML che il parser dovrebbe utilizzare – essenzialmente una definizione di DTD. Da specificare usando l’opzione -c.
  • Il nome di un file che conterrà l’output. Da specificare usando l’opzione -f.
  • Il file che deve essere validato.

In realtà, nsgml.exe prevede molti altri parametri che non verranno descritti in questa sede. Troverai la documentazione completa presso http://www.jclark.com/sp/nsgmls.htm

Nota che nsgml.exe proverà a connettersi ad Internet per recuperare il DTD da W3 se non lo hai localmente – di solito nella cartella pubtext.

Ecco un esempio di riga di comando che esegue la validazione di un file XHTML 1.0 dal nome myfile.xhtml: 

c:program filesvalidatornsgmls -s -c pubtextxhtml.soc -f outputfile.log myfile.xhtml

Puoi omettere il parametro -f se desideri l’output nella console.

Nello stesso modo, puoi validare un documento HTML; nell’ipotesi che tu stia utilizzando HTML 4.1:

  c:program filesvalidatornsgmls -s -c pubtexthtml4.soc myfile.html

Presso http://ktmatu.com/info/do-it-yourself-offline-html-validator/ c’è un’ottima descrizione su come incorporare facilmente la funzionalità di validazione nell’explorer di Windows.

I messaggi di errore di SP sono, a prima vista, alquanto criptici, ma dopo un po’ di pratica non sono così difficili da interpretare. Di solito contengono abbastanza informazioni per riuscire a risalire alle linee di codice incriminate. Numeri come “3:12” indicano che qualcosa è andato storto nella linea 3, colonna 12. Si può anche costruire un semplice parser che prelevi la linea, la colonna ed il messaggio di errore. Ma credo che ciò sia proprio quello che è stato implementato dal servizio di validazione del W3

Ora integriamolo con FrontPage…