Per prima cosa, assicurati che il codice XHTML sia conforme alle regole di "buona formattazione" del documento proprie dell'XML, ovvero:

1. Tutti i tag devono essere chiusi. I tag singoli come <img>, <input>, ecc. vanno chiusi con il segno "/", preceduto da uno spazio. Es.: <img />, <input />, ecc.

2. Tutti i tag, i nomi degli attributi e la maggior parte dei loro valori (esclusi ovviamente percorsi ad URI che possono contenere caratteri maiuscoli) vanno scritti in minuscolo.

3. Tutti i valori degli attributi devono essere sempre racchiusi tra doppi apici.

4. Non utilizzare spazi tra un attributo, il segno "=" e il suo valore.

Mi pare che molti errori riguardino proprio il terzo e il quarto punto di queste regole. Poi non mi sono chiare le righe come questa:

<input type=hidden name="page" page = "request.queryString("page")" />

A parte gli apici doppi ripetuti in:

page = "request.queryString("page")"

che non dovrebbero esserci, quel "request.queryString()" non dovrebbe nemmeno comparire. Deduco che sia codice ASP, che però non dovrebbe comparire nel codice della pagina validata. In pratica, puoi annidare apici dentro altri apici utilizzando tipi di apici diversi tra loro, ad es. scrivendo:

page = "request.queryString('page')"

ma sicuramente non puoi usare apici doppi e poi annidarci all'interno altri apici doppi. Per il resto, quel "request.queryString()" scritto nel codice XHTML non è sicuramente corretto. Dovrebbe apparire solo nel codice ASP della pagina, non nel codice XHTML interpretato. Anche l'attributo "page" non esiste nelle specifiche XHTML...e questo mi fa pensare che si tratti proprio di un errore a livello di ASP.