online indentador corrector codigo code html htmltidy

corrector - indentador de codigo html online



¿Usar HTML Tidy para simplemente sangrar código HTML? (5)

¿Es posible usar HTML Tidy para simplemente sangrar el código HTML?

Código de muestra

<form action="?" method="get" accept-charset="utf-8"> <ul> <li> <label class="screenReader" for="q">Keywords</label><input type="text" name="q" value="" id="q" /> </li> <li><input class="submit" type="submit" value="Search" /></li> </ul> </form>

Resultado deseado

<form action="?" method="get" accept-charset="utf-8"> <ul> <li> <label class="screenReader" for="q">Keywords</label><input type="text" name="q" value="" id="q"/> </li> <li><input class="submit" type="submit" value="Search"/></li> </ul> </form>

Si lo ejecuto con el comando estándar, tidy -f errs.txt -m index.html luego obtengo esto

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta name="generator" content= "HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 15.3.6), see www.w3.org"> <title></title> </head> <body> <form action="?" method="get" accept-charset="utf-8"> <ul> <li><label class="screenReader" for= "q">Keywords</label><input type="text" name="q" value="" id= "q"></li> <li><input class="submit" type="submit" value="Search"></li> </ul> </form> </body> </html>

¿Cómo puedo omitir todas las cosas adicionales y obtener el sangrado del código?

Perdóneme si esa no es una característica que se supone que debe admitir, ¿qué biblioteca / herramienta estoy buscando?


Llego muy tarde a la fiesta :)

Pero en su conjunto de archivos de configuración ordenado

marca ordenada: no

de forma predeterminada, esto se establece en sí.

Una vez hecho esto, tidy no agregará la etiqueta meta generadora a su html.


Necesitas la siguiente opción:

tidy --show-body-only yes -i 4 -w 80 -m file.html

http://tidy.sourceforge.net/docs/quickref.html#show-body-only

-i 4 - sangra 4 espacios (tidy nunca usa pestañas)

-w 80 - ajuste en la columna 80 (predeterminado en mi sistema: 68, muy estrecho)

-m - modificar el archivo en el lugar

(es posible que desee omitir la última opción y examinar primero la salida)

Mostrar solo el cuerpo, naturalmente dejará fuera la tidy-mark (generador meta ).

Otras opciones interesantes son: --quiet yes - no imprime anuncios W3C y otros resultados innecesarios (aún se informan errores)


No encontré una posibilidad "solo reindent - sin ningún cambio". El siguiente archivo de configuración se "reparará" lo más bajo posible y (en su mayoría) solo reentregará el html. Tidy sigue corrigiendo algunas condiciones de error, como atributos duplicados (repetidos).

#based on http://tidy.sourceforge.net/docs/quickref.html #HTML, XHTML, XML Options Reference anchor-as-name: no #? doctype: omit drop-empty-paras: no fix-backslash: no fix-bad-comments: no fix-uri:no hide-endtags: yes #? #input-xml: yes #? join-styles: no literal-attributes: yes lower-literals: no merge-divs: no merge-spans: no output-html: yes preserve-entities: yes quote-ampersand: no quote-nbsp: no show-body-only: auto #Diagnostics Options Reference show-errors: 0 show-warnings: 0 #Pretty Print Options Reference break-before-br: yes indent: yes indent-attributes: no #default indent-spaces: 4 tab-size: 4 wrap: 132 wrap-asp: no wrap-jste: no wrap-php: no wrap-sections: no #Character Encoding Options Reference char-encoding: utf8 #Miscellaneous Options Reference force-output: yes quiet: yes tidy-mark: no

Por ejemplo el siguiente fragmento html

<div> <div> <p> not closed para <h1> h1 head </h1> <ul> <li>not closed li <li>closed li</li> </ul> some text </div> </div>

será cambiado a

<div> <div> <p> not closed para <h1> h1 head </h1> <ul> <li>not closed li <li>closed li </ul>some text </div> </div>

Como puede observar, las hide-endtags: yes oculta el cierre </li> de la segunda viñeta en la entrada. Configurando las hide-endtags: no - obtendremos la siguiente:

<div> <div> <p> not closed para </p> <h1> h1 head </h1> <ul> <li>not closed li </li> <li>closed li </li> </ul>some text </div> </div>

por lo tanto, tidy agrega cerrar </p> y cerrar </li> a la primera viñeta.

No encontré una posibilidad de preservar todo en la entrada y solo reentregar el archivo.


Para responder a la pregunta original del póster, usando Tidy para simplemente sangrar el código HTML, esto es lo que uso:

tidy --indent auto --quiet yes --show-body-only auto --show-errors 0 --wrap 0 input.html

input.html

<form action="?" method="get" accept-charset="utf-8"> <ul> <li> <label class="screenReader" for="q">Keywords</label><input type="text" name="q" value="" id="q" /> </li> <li><input class="submit" type="submit" value="Search" /></li> </ul> </form>

Salida:

<form action="?" method="get" accept-charset="utf-8"> <ul> <li><label class="screenReader" for="q">Keywords</label><input type="text" name="q" value="" id="q"></li> <li><input class="submit" type="submit" value="Search"></li> </ul> </form>

No se ha añadido ningún código HTML adicional. Se suprimen los errores. Para saber qué hace cada opción, es mejor consultar la referencia oficial .


Use un archivo de configuración con solo las opciones de indent , tidy-mark y quiet :

indent: auto indent-spaces: 2 quiet: yes tidy-mark: no

Asígnele el nombre tidy_config.txt y guárdelo en el mismo directorio que el archivo .html. Ejecutalo de esta manera:

tidy -config tidy_config.txt index.html

Para obtener más personalización, use la página de manual de tidy para encontrar otras opciones relevantes como el markup: no o force-output: yes .