Nu Html Checker (v.Nu) le ayuda a detectar errores no deseados en su HTML, CSS y SVG. Le permite verificar documentos por lotes desde la línea de comando y desde otros scripts/aplicaciones, y desplegar su propia instancia del verificador como un servicio (como validator.w3.org/nu). Su código fuente está disponible, al igual que las instrucciones sobre cómo compilar, probar y ejecutar el código.
También están disponibles un Dockerfile (consulte Cómo extraer la imagen de Docker a continuación) y paquetes npm, pip y brew.
Se lanza en sentido ascendente en estos formatos:
binarios precompilados de Linux, Windows y macOS que incluyen un tiempo de ejecución Java incorporado
vnu.jar
: una versión portátil que puede usar en cualquier sistema que tenga instalado Java 11 o superior
vnu.war
: para implementar el servicio de verificación a través de un contenedor de servlets como Tomcat
Nota: Los archivos vnu.jar y vnu.war requieren que tenga instalado Java 11 o superior. Los archivos binarios precompilados de Linux, Windows y macOS no requieren que tengas ninguna versión de Java instalada.
Puede obtener la última versión o ejecutar docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:latest
, npm install vnu-jar
, npm install --registry=https://npm.pkg.github.com @validator/vnu-jar
, brew install vnu
o pip install html5validator
y consulte las secciones Uso y verificación basada en web a continuación. O automatice la verificación de sus documentos con una interfaz como:
Complemento Grunt para validación de HTML o complemento Gulp para validación de HTML o complemento Maven para validación de HTML
Paquete html5validator pip
(para integración en Travis CI, CircleCI, CodeShip, Jekyll, Pelican, etc.)
LMVTFY: Déjame validarlo por ti (verificación automática de JSFiddle/JSBin, etc., enlaces en los comentarios de problemas de GitHub)
Ejecute el verificador con una de las siguientes invocaciones:
• vnu-runtime-image/bin/vnu OPTIONS FILES
(Linux o macOS)
• vnu-runtime-imagebinvnu.bat OPTIONS FILES
(Windows)
• java -jar ~/vnu.jar OPTIONS FILES
(cualquier sistema con Java8+ instalado)
…donde FILES
son los documentos a verificar y OPTIONS
son cero o más de las siguientes opciones:
--errors-only --Werror --exit-zero-always --stdout --asciiquotes
--user-agent USER_AGENT --no-langdetect --no-stream --filterfile FILENAME
--filterpattern PATTERN --css --skip-non-css --also-check-css --svg
--skip-non-svg --also-check-svg --xml --html --skip-non-html
--format gnu|xml|json|text --help --verbose --version
La sección Opciones a continuación proporciona detalles sobre cada opción y el resto de esta sección proporciona algunos ejemplos específicos.
Nota: A lo largo de estos ejemplos, reemplace ~/vnu.jar
con la ruta real a ese archivo jar en su sistema, y reemplace vnu-runtime-image/bin/vnu
y vnu-runtime-imagebinvnu.bat
con la ruta real ruta al programa vnu
o vnu.bat
en su sistema, o si agrega el directorio vnu-runtime-image/bin
o vnu-runtime-imagebin
la variable de entorno PATH
de su sistema, puede invocar el verificador solo con vnu
.
Para verificar uno o más documentos desde la línea de comando:
vnu-runtime-image/bin/vnu FILE.html FILE2.html FILE3.html...
vnu-runtime-imagebinvnu.bat FILE.html FILE2.html FILE3.html...
java -jar ~/vnu.jar FILE.html FILE2.html FILE3.html...
Nota: Si recibe un error StackOverflowError
al invocar el verificador, intente ajustar el tamaño de la pila del subproceso proporcionando la opción -Xss
a Java:
java -Xss512k -jar ~/vnu.jar ...
vnu-runtime-image/bin/java -Xss512k
-m vnu/nu.validator.client.SimpleCommandLineValidator ...
Para verificar todos los documentos en un directorio particular DIRECTORY_PATH
como HTML:
java -jar ~/vnu.jar DIRECTORY_PATH
vnu-runtime-image/bin/vnu DIRECTORY_PATH
vnu-runtime-imagebinvnu.bat DIRECTORY_PATH
Nota: Los ejemplos de esta sección suponen que tiene el directorio vnu-runtime-image/bin
o vnu-runtime-imagebin
en la variable de entorno PATH
de su sistema. Si en su lugar está utilizando el archivo jar, reemplace vnu
en los ejemplos con java -jar ~/vnu.jar
.
Para verificar todos los documentos en un directorio particular DIRECTORY_PATH
como HTML, pero omitir los documentos cuyos nombres no terminen con las extensiones .html
, .htm
, .xhtml
o .xht
:
vnu --skip-non-html DIRECTORY_PATH
Para verificar todos los documentos en un directorio particular como CSS:
vnu --css DIRECTORY_PATH
Para verificar todos los documentos en un directorio particular como CSS, pero omitir los documentos cuyos nombres no terminen con la extensión .css
:
vnu --skip-non-css DIRECTORY_PATH
Para verificar todos los documentos en un directorio en particular, comprobando los documentos cuyos nombres terminan en la extensión .css
como CSS y todos los demás documentos como HTML:
vnu --also-check-css DIRECTORY_PATH
Para verificar todos los documentos en un directorio particular como SVG:
vnu --svg DIRECTORY_PATH
Para marcar todos los documentos en un directorio particular como SVG, pero omitir los documentos cuyos nombres no terminen con la extensión .svg
:
vnu --skip-non-svg DIRECTORY_PATH
Para verificar todos los documentos en un directorio en particular, comprobando los documentos cuyos nombres terminan en la extensión .svg
como SVG y todos los demás documentos como HTML:
vnu --also-check-svg DIRECTORY_PATH
Para consultar un documento web:
vnu _URL_
example: vnu http://example.com/foo
Para comprobar la entrada estándar:
vnu -
example:
echo '<!doctype html><title>...' | vnu -
echo '<!doctype html><title>...' | java -jar ~/vnu.jar -
Cuando se utiliza desde la línea de comando como se describe en esta sección, el verificador proporciona las siguientes opciones:
Specifies whether ASCII quotation marks are substituted for Unicode smart
quotation marks in messages.
default: [unset; Unicode smart quotation marks are used in messages]
Specifies that only error-level messages and non-document-error messages are
reported (so that warnings and info messages are not reported).
default: [unset; all messages reported, including warnings & info messages]
Makes the checker exit non-zero if any warnings are encountered (even if
there are no errors).
default: [unset; checker exits zero if only warnings are encountered]
Makes the checker exit zero even if errors are reported for any documents.
default: [unset; checker exits 1 if errors are reported for any documents]
Makes the checker report errors and warnings to stdout rather than stderr.
default: [unset; checker reports errors and warnings to stderr]
Specifies a filename. Each line of the file contains either a regular
expression or starts with "#" to indicate the line is a comment. Any error
message or warning message that matches a regular expression in the file is
filtered out (dropped/suppressed).
default: [unset; checker does no message filtering]
Specifies a regular expression. Any error message or warning message that
matches the regular expression is filtered out (dropped/suppressed).
As with all other checker options, this option may only be specified once.
So to filter multiple error messages or warning messages, you must provide a
single regular expression that will match all the messages. The typical way
to do that for regular expressions is to OR multiple patterns together using
the "|" character.
default: [unset; checker does no message filtering]
Specifies the output format for reporting the results.
default: "gnu"
possible values: "gnu", "xml", "json", "text" [see information at URL below]
https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#out
Shows detailed usage information.
Check documents as CSS but skip documents that don’t have *.css extensions.
default: [unset; all documents found are checked]
Force all documents to be checked as CSS, regardless of extension.
default: [unset]
Check documents as SVG but skip documents that don’t have *.svg extensions.
default: [unset; all documents found are checked]
Force all documents to be checked as SVG, regardless of extension.
default: [unset]
Skip documents that don’t have *.html, *.htm, *.xhtml, or *.xht extensions.
default: [unset; all documents found are checked, regardless of extension]
Forces any *.xhtml or *.xht documents to be parsed using the HTML parser.
default: [unset; XML parser is used for *.xhtml and *.xht documents]
Forces any *.html documents to be parsed using the XML parser.
default: [unset; HTML parser is used for *.html documents]
Check CSS documents (in addition to checking HTML documents).
default: [unset; no documents are checked as CSS]
Check SVG documents (in addition to checking HTML documents).
default: [unset; no documents are checked as SVG]
Specifies the value of the User-Agent request header to send when checking
HTTPS/HTTP URLs.
default: "Validator.nu/LV"
Disables language detection, so that documents are not checked for missing
or mislabeled html[lang] attributes.
default: [unset; language detection & html[lang] checking are performed]
Forces all documents to be be parsed in buffered mode instead of streaming
mode (causes some parse errors to be treated as non-fatal document errors
instead of as fatal document errors).
default: [unset; non-streamable parse errors cause fatal document errors]
Specifies "verbose" output. (Currently this just means that the names of
files being checked are written to stdout.)
default: [unset; output is not verbose]
Shows the checker version number.
Nu Html Checker, además de poder utilizarse como un cliente de línea de comandos independiente, se puede ejecutar como un servicio HTTP, similar a validator.w3.org/nu, para la verificación basada en navegador de documentos HTML, hojas de estilo CSS e imágenes SVG. a través de la Web. Con ese fin, el verificador se lanza en varios paquetes separados:
Binarios de Linux, Windows y macOS para implementar el verificador como un servicio simple e independiente en cualquier sistema
vnu.jar
para implementar el verificador como un servicio simple e independiente en un sistema con Java instalado
vnu.war
para implementar el verificador en un contenedor de servlets como Tomcat
Todas las implementaciones exponen una API REST que permite verificar documentos HTML, hojas de estilo CSS e imágenes SVG de otros clientes, no solo de navegadores web. Y los binarios de Linux, Windows y macOS y el paquete vnu.jar
también incluyen un cliente HTTP simple que le permite enviar documentos a una instancia del servicio HTTP del verificador que se ejecuta localmente (para una verificación rápida de la línea de comandos) o a cualquier instancia remota. instancia del servicio HTTP del verificador que se ejecuta en cualquier lugar de la Web.
Las últimas versiones de los binarios de Linux, Windows y macOS y de los paquetes vnu.jar y vnu.war están disponibles en el proyecto validator
en github. Las siguientes son instrucciones detalladas sobre cómo usarlos.
Nota: A lo largo de estas instrucciones, reemplace ~/vnu.jar
con la ruta real a ese archivo jar en su sistema y reemplace vnu-runtime-image/bin/java
y vnu-runtime-imagebinjava.exe
con la ruta real ruta al programa checker java
o java.exe
en su sistema, o si agrega el directorio vnu-runtime-image/bin
o vnu-runtime-imagebin
la variable de entorno PATH
de su sistema, puede invocar el verificador solo con java nu.validator.servlet.Main 8888
.
Para ejecutar el verificador como un servicio independiente (usando un servidor Jetty integrado), abra una nueva ventana de terminal e invoque el verificador de esta manera:
java -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java nu.validator.servlet.Main 8888
vnu-runtime-imagebinjava.exe nu.validator.servlet.Main 8888
Luego abra http://0.0.0.0:8888 en un navegador. (Para escuchar en un puerto diferente, reemplace 8888
con el número de puerto).
Advertencia: Las futuras versiones del verificador se vincularán de forma predeterminada a la dirección 127.0.0.1
. Es posible que no se pueda acceder a la implementación del verificador a menos que utilice la propiedad del sistema nu.validator.servlet.bind-address
para vincular el verificador a una dirección diferente:
java -cp ~/vnu.jar
-Dnu.validator.servlet.bind-address=128.30.52.73
nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java
-Dnu.validator.servlet.bind-address=128.30.52.73
nu.validator.servlet.Main 8888
vnu-runtime-imagebinjava.exe
-Dnu.validator.servlet.bind-address=128.30.52.73
nu.validator.servlet.Main 8888
Cuando abres http://0.0.0.0:8888 (o cualquier URL que corresponda al valor nu.validator.servlet.bind-address
que estás usando), verás un formulario similar a validator.w3.org/nu que le permite ingresar la URL de un documento HTML, hoja de estilo CSS o imagen SVG, y mostrar los resultados de la verificación de ese recurso en el navegador.
Nota: Si recibe un error StackOverflowError
al usar el verificador, intente ajustar el tamaño de la pila de subprocesos proporcionando la opción -Xss
a Java:
java -Xss512k -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.servlet.Main 8888
Para ejecutar el verificador dentro de un contenedor de servlets existente, como Apache Tomcat, deberá implementar el archivo vnu.war
en ese servidor siguiendo su documentación. Por ejemplo, en Apache Tomcat puede hacer esto usando la aplicación Manager o simplemente copiando el archivo al directorio webapps
(ya que esa es la configuración predeterminada appBase
). Normalmente verá un mensaje similar al siguiente en el archivo de registro catalina.out
.
May 7, 2014 4:42:04 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/tomcat7/webapps/vnu.war
Suponiendo que su contenedor de servlets está configurado para recibir solicitudes HTTP enviadas a localhost
en el puerto 80
y la raíz de contexto de esta aplicación es vnu
(a menudo, el comportamiento predeterminado es usar el nombre de archivo del archivo WAR como raíz de contexto a menos que se especifique uno explícitamente), debería estar capaz de acceder a la aplicación conectándose a http://localhost/vnu/.
Nota: Es posible que desee personalizar el archivo /WEB-INF/web.xml
dentro del archivo WAR (puede usar cualquier programa de manejo de ZIP) para modificar la configuración del filtro de servlet. Por ejemplo, si desea desactivar el filtro de límite de tamaño entrante, puede comentar ese filtro de esta manera:
<!--
<filter>
<filter-name>inbound-size-limit-filter</filter-name>
<filter-class>nu.validator.servlet.InboundSizeLimitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>inbound-size-limit-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
El verificador está empaquetado con un cliente HTTP que puede usar desde la línea de comandos para enviar documentos a una instancia del servicio HTTP del verificador que se ejecuta localmente (para una verificación rápida de la línea de comandos) o a una instancia remota en cualquier lugar de la Web.
Para verificar documentos localmente usando el cliente HTTP empaquetado, haga esto:
Inicie el verificador como un servicio HTTP local, como se describe en la sección Servidor web independiente .
Abra una nueva ventana de terminal e invoque al cliente HTTP de esta manera:
java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
Para enviar documentos a una instancia del verificador en la Web, como html5.validator.nu/, use las opciones nu.validator.client.host y nu.validator.client.port, como esta:
java -cp ~/vnu.jar -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
...o así:
vnu-runtime-image/bin/java -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
Otras opciones se documentan a continuación.
Al utilizar el cliente HTTP empaquetado para enviar documentos a una instancia del servicio HTTP del verificador para su verificación, puede configurar las propiedades del sistema Java para controlar las opciones de configuración para el comportamiento del verificador.
Por ejemplo, puede suprimir los mensajes de nivel de advertencia y mostrar solo los de nivel de error estableciendo el valor de la propiedad del sistema nu.validator.client.level
en error
, así:
java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
...o así:
vnu-runtime-image/bin/java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
La mayoría de las propiedades enumeradas a continuación se asignan a los parámetros de entrada comunes para el servicio de verificación, como se documenta en github.com/validator/validator/wiki/Service-»-Common-params.
Specifies the hostname of the checker for the client to connect to.
default: "127.0.0.1"
Specifies the hostname of the checker for the client to connect to.
default: "8888"
example: java -Dnu.validator.client.port=8080 -jar ~/vnu.jar FILE.html
Specifies the severity level of messages to report; to suppress
warning-level messages, and only show error-level ones, set this property to
"error".
default: [unset]
possible values: "error"
example: java -Dnu.validator.client.level=error -jar ~/vnu.jar FILE.html
Specifies which parser to use.
default: "html"; or, for *.xhtml input files, "xml"
possible values: [see information at URL below]
https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#parser
Specifies the encoding of the input document.
default: [unset]
Specifies the content-type of the input document.
default: "text/html"; or, for *.xhtml files, "application/xhtml+xml"
Specifies the output format for messages.
default: "gnu"
possible values: [see information at URL below]
https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#out
Specifies whether ASCII quotation marks are substituted for Unicode smart
quotation marks in messages.
default: "yes"
possible values: "yes" or "no"
Binds the validator service to the specified IP address.
default: 0.0.0.0 [causes the checker to listen on all interfaces]
possible values: The IP address of any network interface
example: -Dnu.validator.servlet.bind-address=127.0.0.1
Specifies the connection timeout.
default: 5000
possible values: number of milliseconds
example: -Dnu.validator.servlet.connection-timeout=5000
Specifies the socket timeout.
default: 5000
possible values: number of milliseconds
example: -Dnu.validator.servlet.socket-timeout=5000
Puede extraer la imagen de Docker del verificador desde https://ghcr.io/validator/validator en el registro del contenedor de GitHub.
Para extraer y ejecutar la última versión del verificador:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:latest
Para extraer y ejecutar una etiqueta/versión específica del verificador desde el registro del contenedor, por ejemplo, la versión 17.11.1
:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:17.11.1
Para vincular el verificador a una dirección específica (en lugar de tenerlo escuchando en todas las interfaces):
docker run -it --rm -p 128.30.52.73:8888:8888
ghcr.io/validator/validator:latest
Para hacer que el verificador se ejecute con un tiempo de espera de conexión y de socket diferente a los 5 segundos predeterminados, use las variables de entorno CONNECTION_TIMEOUT_SECONDS
y SOCKET_TIMEOUT_SECONDS
:
docker run -it --rm
-e CONNECTION_TIMEOUT_SECONDS=15
-e SOCKET_TIMEOUT_SECONDS=15
-p 8888:8888
validator/validator
Para hacer que el verificador se ejecute con propiedades particulares del sistema Java configuradas, use la variable de entorno JAVA_TOOL_OPTIONS
:
docker run -it --rm
-e JAVA_TOOL_OPTIONS=-Dnu.validator.client.asciiquotes=yes
-p 8888:8888
validator/validator
Para definir un servicio llamado vnu
para usar con docker compose
, cree un archivo de redacción llamado docker-compose.yml
(por ejemplo), con contenidos como el siguiente:
version: '2' services:
vnu:
image: validator/validator ports:
- "8888:8888"
network_mode: "host" #so "localhost" refers to the host machine.
Siga los pasos a continuación para crear, probar y ejecutar el verificador de modo que pueda abrir http://0.0.0.0:8888/
en un navegador web para usar la interfaz de usuario web del verificador.
Asegúrese de tener instalados git, python y JDK 8 o superior.
Establezca la variable de entorno JAVA_HOME
:
exportar JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu, etc.
exportar JAVA_HOME=$(/usr/libexec/java_home) <-- MacOS
Cree un directorio de trabajo:
clon de git https://github.com/validator/validator.git
Cambie a su directorio de trabajo:
validador de cd
Inicie el script Python del verificador:
python ./checker.py todo
La primera vez que ejecute el script Python del verificador, necesitará estar en línea y la compilación necesitará tiempo para descargar varios megabytes de dependencias.
Los pasos anteriores construirán, probarán y ejecutarán el verificador de manera que pueda abrir http://0.0.0.0:8888/
en un navegador web para usar la interfaz de usuario web del verificador.
Advertencia: Las futuras versiones del verificador se vincularán de forma predeterminada a la dirección 127.0.0.1
. Es posible que no se pueda acceder a la implementación de su verificador a menos que use la opción --bind-address
para vincular el verificador a una dirección diferente:
python ./checker.py --bind-address=128.30.52.73 all
Utilice python ./checker.py --help
para ver las opciones de la línea de comandos para controlar el comportamiento del script, así como los nombres de los objetivos de compilación que puede llamar por separado; p.ej:
python ./checker.py build # para compilar solo
python ./checker.py prueba de compilación # para compilar y probar
python ./checker.py run # para ejecutar solo
python ./checker.py jar # para compilar vnu.jar
python ./checker.py actualización superficial &&
python ./checker.py dldeps &&
python ./checker.py jar # para compilar vnu.jar más rápido