2011-01-30 10 views
7

Ugh. La parola è nota per il suo linguaggio HTML gonfiato, contorto, non conforme agli standard e non semantico. Sfortunatamente, ho un professore che ci richiede di generare un profilo con standard molto rigorosi. Preferirei non scriverlo a mano, così ho deciso di creare qualcosa che sarebbe stato utile anche per i miei compagni di classe. Ho creato la struttura utilizzando una semplice lista numerata in NeoOffice sul mio Mac, l'ho esportata come HTML e ho scritto un bel po 'di CSS per modellarla. Quindi, ho chiesto a qualcuno di creare un elenco ordinato in Word per Windows, esportarlo come html e inviarlo a me per verificare la compatibilità. Dopo aver scrollato le miglia lungo la pagina, cercando di reprimere un brivido, ho visto un problema. Word non ha utilizzato <ol> e <li>. Ha usato montagne di nidificazione <span> s con le classi fuori dal wazoo. Odio vedere sprecare tutto il mio lavoro, ma con questo contenuto è impossibile lavorare - dovrei disegnare su una base da documento a documento, piuttosto che con un foglio di stile universale.Stile HTML generato da Microsoft Word

Idealmente, Word genererebbe HTML utilizzando tag standard in modo da poterlo modificare come qualsiasi altro elenco, ma questo non sembra essere il caso. Come posso creare liste che effettivamente usano <ul> e <li> anziché <span>, o almeno modificare qualcosa nel mio codice per funzionare in qualche modo con il modo strano in cui crea elenchi?

+0

Correlato: http://stackoverflow.com/questions/4824619/batch-conversion-of-docx-to-clean-html Potrebbe anche aiutare: http://stackoverflow.com/questions/1255738/tinymce-and- import-copy-paste-from-microsoft-word – thirtydot

+0

Non mi è ancora chiaro esattamente cosa stia cercando di ottenere. – reisio

+0

Vedere le ultime righe. Ho chiarito – Walker

risposta

0

Da alcune ricerche, sembra che l'approccio di conversione del documento in HTML non sia pratico. Word è semplicemente troppo variabile nel suo approccio al salvataggio di file e generazione di HTML per un singolo documento, per non parlare delle differenze tra le diverse versioni di Word. Simile al suggerimento di Wyatt, ci possono essere modi per ripulire il codice, ma nessuno di essi è perfetto. Scavare attorno all'API può fornire un modo per analizzarlo più facilmente, ma potrebbe risultare che ciò sia in pratica altrettanto contorto. Sembra che usare la parola come strumento di generazione di liste sia semplicemente irrealistico.

0

Se riesci a mettere le mani su un PC Windows, utilizza Notepad ++ (http://notepad-plus-plus.org/) per incollare il codice, quindi seleziona il plug-in per formattare il codice.

+0

È un plugin che viene fornito di serie con Notepad ++? Uso Textmate su Mac, quindi mi chiedo se ci sarebbe un equivalente per quello che stai suggerendo. Non sono sicuro se questo risolverà il problema del mark-up non semantico di Word, però? – Walker

+0

Credo di si. Vai a Menu> TestFX> HTML Tidy> Tidy: Reindent XML. Per quanto riguarda ciò che Word sta facendo, potresti semplicemente copiare tutto nel blocco note per perdere il codice di formattazione aggiuntivo aggiunto da Word e quindi incollarlo in Notepad ++, dove puoi riformattarlo. Ti consiglierei di prendere nota usando Notepad ++. – Teknophilia

+1

Ho appena scoperto un'altra alternativa a notepad ++ per macs. Hai TextWrangeler (http://www.barebones.com/products/textwrangler/), gedit (http://projects.gnome.org/gedit/) e Macpad (http://sourceforge.net/projects/macpp /). Macpad dice che è il suo blocco note ++ per Mac, quindi potrebbe avere anche HTML Tidy. – Teknophilia

0

Utilizzare un editor WYSIWYG come generatore di liste. Ciò eliminerebbe la necessità per gli utenti di gestire i CSS grezzi, al costo di portarli fuori dalla zona di comfort di Microsoft Word.

0

Anche l'uso creativo di Trova e sostituisci di Word potrebbe funzionare. Ad esempio, apri il file HTML con NotePad, copia e incolla il testo in un documento di Word. Apri Trova e sostituisci. Se il codice HTML simile a questo (per esempio), con "Questa è la prima riga del testo" è la prima voce:

<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span...(Cut due to berevity)... 
-height:115%'>This is the first line of text<o:p></o:p></span></p> 

trovare Poi e sostituirlo con caratteri jolly su per \<p*line-height:115%'\ e sostituirlo con nulla. Potrebbe richiedere una serie di Trova/Sostituisci. Il codice HTML è abbondante ma tutto il resto è uguale, almeno è coerente.

0

Se hai Dreamweaver a portata di mano, c'è un magico pulsante "ripulisci la parola HTML" che fa miracoli in questo scenario.

0

MSWord è intelligente quanto l'autore: una lista ordinata è nascosta come tale in HTML solo se è stata creata in MSWord come tale. Ciò significa che un elenco deve essere formattato come tale per i costrutti MSWord e non come viene visualizzato sulla pagina. Molte persone creeranno liste che "appaiono" per essere ordinate o non ordinate usando tab e altre formattazioni e non usando le funzioni dell'elenco MSWord. Salvando in HTML prova a salvarlo come è stato scritto, non come è stato visualizzato.

1

Utilizzare questa risorsa http://word2cleanhtml.com/ per convertire i documenti di Word in clean HTML. Molto utile, secondo me.

3

I ragazzi che hanno scritto Winword e la sua generazione di codice HTML sono persone intelligenti.Se fosse facile usare le caratteristiche HTML in modo purista, l'avrebbero fatto.

Word significa creare layout ottimizzati per la carta. supporta concetti come i tab-stop e la numerazione multilivello che l'HTML non supporta o che sta appena iniziando. Di conseguenza, la versione HTML di un documento di Word non è HTML "bello", ma un tentativo di conservare le funzionalità del documento di Word in modo accurato.

Quando Word riapre un file HTML che ha salvato, esegue un ingegnoso reverse-engineering sul documento, in modo che i rendering in Word sembrino molto simili all'inizio. Allo stesso modo, se si inserisce l'HTML come snippet in una pagina Web, mantenendo CSS di Word, i risultati sono piuttosto fedeli. In questo caso c'è uno scontro culturale tra il CSS sottostante della pagina Web e il CSS di Word, e alcuni sforzi sono necessari per ottenere il meglio da un cattivo lavoro. Anche l'HTML di Word non usa UTF-8, che necessita di una certa manipolazione.

HTMLTidy può essere utilizzato per estrarre il markup di Word, ma dopo questo è necessario un ulteriore massaggio per un buon rendering all'interno di una pagina Web. Ho lavorato su un prodotto per 15 anni che fa questo mix di Word e pagine web, ed i risultati possono essere abbastanza buoni se si affina il CSS.

Abbiamo utilizzato Word perché stiamo creando versioni di carta e importando testo da report scritti in Word, non perché non siamo riusciti a trovare un editor HTML dedicato.

Non suggerirei di utilizzare Word per creare un purista HTML pulito. Non useresti un apriscatole per aprire una bottiglia di vino, vero?

La vita sarebbe molto più semplice se: a) Microsoft re-ingegnerizzata la miriade di opzioni sulle sue 'proiettili e il numero' altamente confuse caratteristica, b) HTML fornito nativo, e correttamente il supporto di numerazione optional, multi-livello, invece degli approcci post-pensiero attualmente disponibili. La debolezza dell'HTML in quest'area può essere vista nelle fragili opzioni di numerazione disponibili in Google Docs.

Tanto è migliorato con HTML 5, forse possiamo sperare che HTML 6 aiuti a superare il divario tra word processor e editor HTML.