C’è un normalizzatore HTML css che funziona?

Molto tempo fa, ho scritto un programma stile ‘normalizzatore’ per scansionare il codice ASP / HTML di una grande pila di pagine ASP classiche (la maggior parte delle quali erano originariamente generate da documenti MS-Word, quindi naturalmente erano disseminate di fogli di stile superflui e massicci -off stili). Il normalizzatore di stile ha generato un set minimo di fogli di stile e stili e un nuovo documento asp / html “sanitizzato”, in modo che il documento sterilizzato producesse esattamente lo stesso output sottoposto a rendering dell’originale (verificato con confronti dell’immagine screenshot).

Di tanto in tanto, mi imbatto in un bisogno di un programma come questo, e sto giocando con l’idea di scriverne uno per la versione commerciale.

Le mie competenze su google non hanno trovato nulla di esattamente simile a questo (HTML: il modulo Normalize Perl e il progetto HTML Tidy sembrano solo ripulire i tag).

Quindi, le mie domande sono:

  1. esiste già un tale strumento, commerciale o di altro tipo?
  2. se no, qualcuno ne ha davvero bisogno?
  3. se sì, quali caratteristiche lo renderebbero veramente utile?

per esempio # 3, raccogliendo un foglio di stile di base per un set di pagine, o regolando tutte le pagine per usare un dato foglio di stile di base; preservando i comandi classici di asp, seguendo #include, preservando gli script incorporati di asp.net, et al. Più sono specifici e numerosi, meglio è.

Esempio:
Vecchi tag html con tag incorporati

 title  .cls1 { font-family: arial; font-size: 10px; font-weight: bold; }     
test div

Nuovo html

  title  .cls1 { font-family: arial; font-size: 10px; font-weight: bold; }     
test div

Si noti che lo stile sul div è sparito, poiché era ridondante con la class cls1

EDIT: rimosso il termine ‘sanitizer’ dal momento che non sono focalizzato sugli attacchi XSS o sull’ingresso di filtro nei commenti, semplicemente sul consolidamento di molti stili ad-hoc e classi CSS casuali in un insieme coerente di fogli di stile.

Beh, non posso dire in modo definitivo che questo “funzioni” per tutto quanto descritto, ma Tidy fa un po ‘più di pulizia dei tag.

Vedi le opzioni di configurazione HTML Tidy , specialmente quelle relative a Microsoft Word (come word-2000 )

Se vuoi sapere se hai svolto un lavoro ragionevole, dovresti provare questi test (usando qualcosa come Tidy probabilmente troverai che non hai fatto un lavoro ragionevole).

Alcune opzioni:

  • Purificatore HTML in PHP
  • lxml.html.clean in Python
  • feedparser ha un detergente aggressivo in Python
  • Codice LiveJournal in Perl

Qualsiasi cosa che usi espressioni regolari e non analizzi il markup sarebbe sospetto nella mia mente (e troppo complicato da implementare).

Vecchia domanda ma alcune persone potrebbero ancora trovarlo utile. Controlla http://necolas.github.com/normalize.css/ . Funziona bene!

Non dimenticare la bella zuppa

Come posso correggere tag HTML nidificati / non chiusi erroneamente?