Le Nu Html Checker (v.Nu) vous aide à détecter les erreurs involontaires dans votre HTML, CSS et SVG. Il vous permet de vérifier par lots des documents à partir de la ligne de commande et d'autres scripts/applications, et de déployer votre propre instance du vérificateur en tant que service (comme validator.w3.org/nu). Son code source est disponible, tout comme les instructions sur la façon de créer, tester et exécuter le code.
Un Dockerfile (voir Extraction de l'image Docker ci-dessous) et des packages npm, pip et Brew sont également disponibles.
Il est diffusé en amont dans ces formats :
binaires Linux, Windows et macOS précompilés qui incluent un runtime Java intégré
vnu.jar
- une version portable que vous pouvez utiliser sur n'importe quel système sur lequel Java 11 ou supérieur est installé
vnu.war
- pour déployer le service de vérification via un conteneur de servlet tel que Tomcat
Remarque : Les fichiers vnu.jar et vnu.war nécessitent que Java 11 ou une version ultérieure soit installée. Les binaires Linux, Windows et macOS précompilés ne nécessitent aucune version de Java déjà installée.
Vous pouvez obtenir la dernière version ou exécuter 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
ou pip install html5validator
et consultez les sections Utilisation et Vérification basée sur le Web ci-dessous. Ou automatisez la vérification de vos documents avec une interface telle que :
Plugin Grunt pour la validation HTML ou plugin Gulp pour la validation HTML ou plugin Maven pour la validation HTML
Package pip
html5validator (pour intégration dans Travis CI, CircleCI, CodeShip, Jekyll, Pelican, etc.)
LMVTFY : laissez-moi valider cela pour vous (vérification automatique de JSFiddle/JSBin, etc., liens dans les commentaires du problème GitHub)
Exécutez le vérificateur avec l'un des appels suivants :
• vnu-runtime-image/bin/vnu OPTIONS FILES
(Linux ou macOS)
• vnu-runtime-imagebinvnu.bat OPTIONS FILES
(Windows)
• java -jar ~/vnu.jar OPTIONS FILES
(tout système sur lequel Java8+ est installé)
… où FILES
sont les documents à vérifier et OPTIONS
sont zéro ou plusieurs des options suivantes :
--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 section Options ci-dessous fournit des détails sur chaque option et le reste de cette section fournit des exemples spécifiques.
Remarque : dans ces exemples, remplacez ~/vnu.jar
par le chemin réel de ce fichier jar sur votre système, et remplacez vnu-runtime-image/bin/vnu
et vnu-runtime-imagebinvnu.bat
par le chemin réel. chemin d'accès au programme vnu
ou vnu.bat
sur votre système - ou si vous ajoutez le répertoire vnu-runtime-image/bin
ou vnu-runtime-imagebin
à la variable d'environnement PATH
de votre système, vous pouvez appeler le vérificateur avec simplement vnu
.
Pour vérifier un ou plusieurs documents depuis la ligne de commande :
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...
Remarque : Si vous obtenez une erreur StackOverflowError
lors de l'appel du vérificateur, essayez d'ajuster la taille de la pile de threads en fournissant l'option -Xss
à Java :
java -Xss512k -jar ~/vnu.jar ...
vnu-runtime-image/bin/java -Xss512k
-m vnu/nu.validator.client.SimpleCommandLineValidator ...
Pour vérifier tous les documents d'un répertoire DIRECTORY_PATH
particulier au format HTML :
java -jar ~/vnu.jar DIRECTORY_PATH
vnu-runtime-image/bin/vnu DIRECTORY_PATH
vnu-runtime-imagebinvnu.bat DIRECTORY_PATH
Remarque : Les exemples de cette section supposent que vous disposez du répertoire vnu-runtime-image/bin
ou vnu-runtime-imagebin
dans la variable d'environnement PATH
de votre système. Si vous utilisez plutôt le fichier jar, remplacez vnu
dans les exemples par java -jar ~/vnu.jar
.
Pour vérifier tous les documents d'un répertoire particulier DIRECTORY_PATH
au format HTML, mais ignorer tous les documents dont les noms ne se terminent pas par les extensions .html
, .htm
, .xhtml
ou .xht
:
vnu --skip-non-html DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier en CSS :
vnu --css DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier en tant que CSS, mais ignorer tous les documents dont les noms ne se terminent pas par l'extension .css
:
vnu --skip-non-css DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier, les documents dont les noms se terminent par l'extension .css
étant vérifiés en CSS et tous les autres documents étant vérifiés en HTML :
vnu --also-check-css DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier au format SVG :
vnu --svg DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier au format SVG, mais ignorer tous les documents dont les noms ne se terminent pas par l'extension .svg
:
vnu --skip-non-svg DIRECTORY_PATH
Pour vérifier tous les documents d'un répertoire particulier, les documents dont les noms se terminent par l'extension .svg
étant vérifiés en SVG et tous les autres documents étant vérifiés en HTML :
vnu --also-check-svg DIRECTORY_PATH
Pour vérifier un document Web :
vnu _URL_
example: vnu http://example.com/foo
Pour vérifier l'entrée standard :
vnu -
example:
echo '<!doctype html><title>...' | vnu -
echo '<!doctype html><title>...' | java -jar ~/vnu.jar -
Lorsqu'il est utilisé à partir de la ligne de commande comme décrit dans cette section, le vérificateur fournit les options suivantes :
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.
Le Nu Html Checker — en plus d'être utilisable comme client de ligne de commande autonome — peut être exécuté en tant que service HTTP, similaire à validator.w3.org/nu, pour la vérification basée sur le navigateur des documents HTML, des feuilles de style CSS et des images SVG. sur le Web. À cette fin, le vérificateur est publié sous forme de plusieurs packages distincts :
Binaires Linux, Windows et macOS pour déployer le vérificateur en tant que simple service autonome sur n'importe quel système
vnu.jar
pour déployer le vérificateur en tant que simple service autonome sur un système sur lequel Java est installé
vnu.war
pour déployer le vérificateur sur un conteneur de servlet tel que Tomcat
Tous les déploiements exposent une API REST qui permet de vérifier les documents HTML, les feuilles de style CSS et les images SVG provenant d'autres clients, pas seulement des navigateurs Web. Et les binaires Linux, Windows et macOS ainsi que le package vnu.jar
incluent également un simple client HTTP qui vous permet d'envoyer des documents à une instance exécutée localement du service HTTP de vérification (pour une vérification rapide de la ligne de commande) ou à n'importe quel serveur distant. instance du service HTTP de vérification exécuté n'importe où sur le Web.
Les dernières versions des binaires Linux, Windows et macOS et des packages vnu.jar et vnu.war sont disponibles à partir du projet validator
sur github. Vous trouverez ci-dessous des instructions détaillées sur leur utilisation.
Remarque : tout au long de ces instructions, remplacez ~/vnu.jar
par le chemin réel de ce fichier jar sur votre système, et remplacez vnu-runtime-image/bin/java
et vnu-runtime-imagebinjava.exe
par le chemin réel. chemin d'accès au programme checker java
ou java.exe
sur votre système - ou si vous ajoutez le répertoire vnu-runtime-image/bin
ou vnu-runtime-imagebin
à la variable d'environnement PATH
de votre système, vous pouvez appeler le checker avec juste java nu.validator.servlet.Main 8888
.
Pour exécuter le vérificateur en tant que service autonome (à l'aide d'un serveur Jetty intégré), ouvrez une nouvelle fenêtre de terminal et invoquez le vérificateur comme ceci :
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
Ouvrez ensuite http://0.0.0.0:8888 dans un navigateur. (Pour écouter sur un autre port, remplacez 8888
par le numéro de port.)
Attention : les futures versions du vérificateur seront liées par défaut à l'adresse 127.0.0.1
. Le déploiement de votre vérificateur peut devenir inaccessible à moins que vous n'utilisiez la propriété système nu.validator.servlet.bind-address
pour lier le vérificateur à une adresse différente :
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
Lorsque vous ouvrez http://0.0.0.0:8888 (ou quelle que soit l'URL correspondant à la valeur nu.validator.servlet.bind-address
que vous utilisez), vous verrez un formulaire similaire à validator.w3.org/nu qui vous permet de saisir l'URL d'un document HTML, d'une feuille de style CSS ou d'une image SVG, et d'afficher les résultats de la vérification de cette ressource dans le navigateur.
Remarque : Si vous obtenez une erreur StackOverflowError
lors de l'utilisation du vérificateur, essayez d'ajuster la taille de la pile de threads en fournissant l'option -Xss
à Java :
java -Xss512k -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.servlet.Main 8888
Pour exécuter le vérificateur dans un conteneur de servlet existant tel qu'Apache Tomcat, vous devrez déployer le fichier vnu.war
sur ce serveur en suivant sa documentation. Par exemple, sur Apache Tomcat, vous pouvez le faire à l'aide de l'application Manager ou simplement en copiant le fichier dans le répertoire webapps
(puisqu'il s'agit du paramètre appBase
par défaut). En règle générale, vous verrez un message similaire au suivant dans le fichier journal 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
En supposant que votre conteneur de servlets est configuré pour recevoir les requêtes HTTP envoyées à localhost
sur le port 80
et que la racine de contexte de cette application est vnu
(souvent, le comportement par défaut consiste à utiliser le nom de fichier du fichier WAR comme racine de contexte, sauf si une racine de contexte est explicitement spécifiée), vous devriez être pouvoir accéder à l'application en se connectant à http://localhost/vnu/.
Remarque : Vous souhaiterez peut-être personnaliser le fichier /WEB-INF/web.xml
à l'intérieur du fichier WAR (vous pouvez utiliser n'importe quel programme de gestion ZIP) pour modifier la configuration du filtre de servlet. Par exemple, si vous souhaitez désactiver le filtre de limite de taille entrante, vous pouvez commenter ce filtre comme ceci :
<!--
<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>
-->
Le vérificateur est fourni avec un client HTTP que vous pouvez utiliser à partir de la ligne de commande pour envoyer des documents à une instance exécutée localement du service HTTP du vérificateur (pour une vérification rapide de la ligne de commande) ou à une instance distante n'importe où sur le Web.
Pour vérifier des documents localement à l'aide du client HTTP fourni, procédez comme suit :
Démarrez le vérificateur en tant que service HTTP local, comme décrit dans la section Serveur Web autonome .
Ouvrez une nouvelle fenêtre de terminal et appelez le client HTTP comme ceci :
java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
Pour envoyer des documents à une instance du vérificateur sur le Web, telle que html5.validator.nu/, utilisez les options nu.validator.client.host et nu.validator.client.port, comme ceci :
java -cp ~/vnu.jar -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
…ou comme ceci :
vnu-runtime-image/bin/java -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
D'autres options sont documentées ci-dessous.
Lorsque vous utilisez le client HTTP fourni pour envoyer des documents à une instance du service HTTP du vérificateur à des fins de vérification, vous pouvez définir les propriétés du système Java pour contrôler les options de configuration du comportement du vérificateur.
Par exemple, vous pouvez supprimer les messages de niveau d'avertissement et afficher uniquement ceux de niveau d'erreur en définissant la valeur de la propriété système nu.validator.client.level
sur error
, comme ceci :
java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
…ou comme ceci :
vnu-runtime-image/bin/java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
La plupart des propriétés répertoriées ci-dessous correspondent aux paramètres d'entrée courants du service de vérification, comme documenté sur 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
Vous pouvez extraire l'image Docker du vérificateur depuis https://ghcr.io/validator/validator dans le registre de conteneurs GitHub.
Pour extraire et exécuter la dernière version du vérificateur :
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:latest
Pour extraire et exécuter une balise/une version spécifique du vérificateur à partir du registre de conteneurs, par exemple la version 17.11.1
:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:17.11.1
Pour lier le vérificateur à une adresse spécifique (plutôt que de le faire écouter sur toutes les interfaces) :
docker run -it --rm -p 128.30.52.73:8888:8888
ghcr.io/validator/validator:latest
Pour que le vérificateur s'exécute avec un délai d'expiration de connexion et un délai d'expiration de socket différents des 5 secondes par défaut, utilisez les variables d'environnement CONNECTION_TIMEOUT_SECONDS
et SOCKET_TIMEOUT_SECONDS
:
docker run -it --rm
-e CONNECTION_TIMEOUT_SECONDS=15
-e SOCKET_TIMEOUT_SECONDS=15
-p 8888:8888
validator/validator
Pour que le vérificateur s'exécute avec des propriétés système Java particulières définies, utilisez la variable d'environnement JAVA_TOOL_OPTIONS
:
docker run -it --rm
-e JAVA_TOOL_OPTIONS=-Dnu.validator.client.asciiquotes=yes
-p 8888:8888
validator/validator
Pour définir un service nommé vnu
à utiliser avec docker compose
, créez un fichier Compose nommé docker-compose.yml
(par exemple), avec un contenu tel que le suivant :
version: '2' services:
vnu:
image: validator/validator ports:
- "8888:8888"
network_mode: "host" #so "localhost" refers to the host machine.
Suivez les étapes ci-dessous pour créer, tester et exécuter le vérificateur de manière à pouvoir ouvrir http://0.0.0.0:8888/
dans un navigateur Web pour utiliser l'interface utilisateur Web du vérificateur.
Assurez-vous que git, python et JDK 8 ou supérieur sont installés.
Définissez la variable d'environnement JAVA_HOME
:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu, etc.
export JAVA_HOME=$(/usr/libexec/java_home) <-- MacOS
Créez un répertoire de travail :
clone git https://github.com/validator/validator.git
Accédez à votre répertoire de travail :
validateur de CD
Démarrez le script Python du vérificateur :
python ./checker.py tout
La première fois que vous exécuterez le script Python du vérificateur, vous devrez être en ligne et la build aura besoin de temps pour télécharger plusieurs mégaoctets de dépendances.
Les étapes ci-dessus permettront de créer, tester et exécuter le vérificateur de telle sorte que vous puissiez ouvrir http://0.0.0.0:8888/
dans un navigateur Web pour utiliser l'interface utilisateur Web du vérificateur.
Attention : les futures versions du vérificateur seront liées par défaut à l'adresse 127.0.0.1
. Le déploiement de votre vérificateur peut devenir inaccessible à moins que vous n'utilisiez l'option --bind-address
pour lier le vérificateur à une adresse différente :
python ./checker.py --bind-address=128.30.52.73 all
Utilisez python ./checker.py --help
pour voir les options de ligne de commande permettant de contrôler le comportement du script, ainsi que les noms de cibles de construction que vous pouvez appeler séparément ; par exemple :
python ./checker.py build # pour construire uniquement
python ./checker.py build test # pour construire et tester
python ./checker.py run # pour exécuter uniquement
python ./checker.py jar # pour compiler vnu.jar
python ./checker.py mise à jour-shallow &&
python ./checker.py dldeps &&
python ./checker.py jar # pour compiler vnu.jar plus rapidement