Il codice passa la validazione sintattica, ma non passa la validazione semantica

Infatti l'uso di una tabella solo per centrare un oggetto e` un grave errore semantico.
Pensa come vien reso quel codice da uno screen-reader:
Tabella di una riga ed una colonna
Prima riga - prima colonna
... contenuto ...
Fine tabella
Se invece della tabella usi un <div>, la cosa funziona lo stesso, e usi un codice corertto
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>sempre centrato</title>
<style type="text/css">
/*<![CDATA[*/
body, html {
  height: 100%;
  width: 100%;
  text-align: center;     /* per sistemare IE */
  vertical-align: middle;
}
#centrato {
  margin: auto; /* oppure 0 auto per centrare solo orizz. */
  background-color: #CCC;
}
/*]]*/
</style>
</head>
<body>
  <div id="centrato">
    
  </div>
</body>
</html>
Nota che in XHTML Strict non si puo` inserire il CSS dentro il file HTML, salvo includerlo in commenti CDATA, come nel mio esempio.