Nu Html Checker (v.Nu) は、HTML、CSS、SVG 内の意図しない間違いを見つけるのに役立ちます。これにより、コマンド ラインや他のスクリプト/アプリからドキュメントをバッチ チェックしたり、チェッカーの独自のインスタンスをサービスとしてデプロイしたりできます (validator.w3.org/nu など)。そのソース コードと、コードの構築、テスト、実行方法に関する説明が入手可能です。
Dockerfile (下記の「Docker イメージのプル」を参照) および npm、pip、および brew パッケージも利用できます。
次の形式でアップストリームでリリースされます。
組み込み Java ランタイムを含む、コンパイル済みの Linux、Windows、および macOS バイナリ
vnu.jar
— Java 11 以降がインストールされているシステムで使用できるポータブル バージョン
vnu.war
— Tomcat などのサーブレット コンテナを介してチェッカー サービスをデプロイするための
注: vnu.jarおよびvnu.warファイルを使用するには、Java 11 以降がインストールされている必要があります。コンパイル済みの Linux、Windows、および macOS バイナリでは、Java のどのバージョンもすでにインストールされている必要はありません。
最新リリースを入手するか、 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
、またはpip install html5validator
アクセスして、以下の「使用法」および「Web ベースのチェック」セクションを参照してください。または、次のようなフロントエンドを使用してドキュメントのチェックを自動化します。
HTML 検証用の Grunt プラグイン、HTML 検証用の Gulp プラグイン、または HTML 検証用の Maven プラグイン
html5validator pip
パッケージ (Travis CI、CircleCI、CodeShip、Jekyll、Pelican などの統合用)
LMVTFY: Let Me Validate That For You (自動チェック JSFiddle/JSBin など、GitHub 問題コメント内のリンク)
次のいずれかの呼び出しでチェッカーを実行します。
• vnu-runtime-image/bin/vnu OPTIONS FILES
(Linux または macOS)
• vnu-runtime-imagebinvnu.bat OPTIONS FILES
(Windows)
• java -jar ~/vnu.jar OPTIONS FILES
(Java8+ がインストールされているシステム)
…ここで、 FILES
チェックするドキュメントであり、 OPTIONS
次の 0 個以上のオプションです。
--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
以下の「オプション」セクションでは各オプションの詳細を説明し、このセクションの残りの部分では具体的な例をいくつか示します。
注:これらの例全体で、 ~/vnu.jar
システム上のその jar ファイルへの実際のパスに置き換え、 vnu-runtime-image/bin/vnu
およびvnu-runtime-imagebinvnu.bat
を実際のパスに置き換えてください。システム上のvnu
またはvnu.bat
プログラムへのパス。または、システムのPATH
環境変数にvnu-runtime-image/bin
またはvnu-runtime-imagebin
ディレクトリを追加すると、チェッカーを呼び出すことができます。 vnu
だけで。
コマンドラインから 1 つ以上のドキュメントを確認するには:
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...
注:チェッカーの呼び出し時にStackOverflowError
エラーが発生した場合は、Java に-Xss
オプションを指定してスレッド スタック サイズを調整してみてください。
java -Xss512k -jar ~/vnu.jar ...
vnu-runtime-image/bin/java -Xss512k
-m vnu/nu.validator.client.SimpleCommandLineValidator ...
特定のディレクトリDIRECTORY_PATH
内のすべてのドキュメントを HTML としてチェックするには:
java -jar ~/vnu.jar DIRECTORY_PATH
vnu-runtime-image/bin/vnu DIRECTORY_PATH
vnu-runtime-imagebinvnu.bat DIRECTORY_PATH
注:このセクションの例では、システムのPATH
環境変数にvnu-runtime-image/bin
またはvnu-runtime-imagebin
ディレクトリがあることを前提としています。代わりに jar ファイルを使用している場合は、例のvnu
java -jar ~/vnu.jar
に置き換えてください。
特定のディレクトリDIRECTORY_PATH
内のすべてのドキュメントを HTML としてチェックしますが、名前が拡張子.html
、 .htm
、 .xhtml
、または.xht
で終わらないドキュメントをスキップするには、次のようにします。
vnu --skip-non-html DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントを CSS としてチェックするには:
vnu --css DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントを CSS としてチェックし、名前が拡張子.css
で終わらないドキュメントをスキップするには、次のようにします。
vnu --skip-non-css DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントをチェックするには、名前が拡張子.css
で終わるドキュメントは CSS としてチェックされ、その他すべてのドキュメントは HTML としてチェックされます。
vnu --also-check-css DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントを SVG としてチェックするには:
vnu --svg DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントを SVG としてチェックし、名前が拡張子.svg
で終わらないドキュメントをスキップするには、次のようにします。
vnu --skip-non-svg DIRECTORY_PATH
特定のディレクトリ内のすべてのドキュメントをチェックするには、名前が拡張子.svg
で終わるドキュメントは SVG としてチェックされ、その他すべてのドキュメントは HTML としてチェックされます。
vnu --also-check-svg DIRECTORY_PATH
Web ドキュメントを確認するには:
vnu _URL_
example: vnu http://example.com/foo
標準入力を確認するには:
vnu -
example:
echo '<!doctype html><title>...' | vnu -
echo '<!doctype html><title>...' | java -jar ~/vnu.jar -
このセクションで説明するようにコマンド ラインから使用すると、チェッカーには次のオプションが提供されます。
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 は、スタンドアロンのコマンドライン クライアントとして使用できるだけでなく、validator.w3.org/nu と同様に HTTP サービスとして実行して、HTML ドキュメント、CSS スタイルシート、SVG 画像をブラウザベースでチェックできます。ウェブ上で。そのために、チェッカーはいくつかの個別のパッケージとしてリリースされています。
チェッカーをシンプルな自己完結型サービスとして任意のシステムに展開するための Linux、Windows、および macOS バイナリ
Java がインストールされているシステムにチェッカーを単純な自己完結型サービスとしてデプロイするためのvnu.jar
Tomcat などのサーブレット コンテナにチェッカーをデプロイするためのvnu.war
すべてのデプロイメントは、Web ブラウザーだけでなく、他のクライアントからの HTML ドキュメント、CSS スタイルシート、SVG 画像のチェックを可能にする REST API を公開します。また、Linux、Windows、macOS のバイナリとvnu.jar
パッケージには、ローカルで実行されているチェッカー HTTP サービスのインスタンス (高速なコマンドライン チェックのために) または任意のリモートにドキュメントを送信できるシンプルな HTTP クライアントも含まれています。 Web 上の任意の場所で実行されるチェッカー HTTP サービスのインスタンス。
Linux、Windows、macOS のバイナリと vnu.jar および vnu.war パッケージの最新リリースは、github のvalidator
プロジェクトから入手できます。以下に、それらを使用するための詳細な手順を示します。
注:これらの手順全体を通じて、 ~/vnu.jar
システム上のその jar ファイルへの実際のパスに置き換え、 vnu-runtime-image/bin/java
およびvnu-runtime-imagebinjava.exe
を実際のパスに置き換えてください。システム上のチェッカーjava
またはjava.exe
プログラムへのパス。または、システムのPATH
環境変数にvnu-runtime-image/bin
またはvnu-runtime-imagebin
ディレクトリを追加すると、次のコマンドでチェッカーを呼び出すことができます。 java nu.validator.servlet.Main 8888
。
チェッカーをスタンドアロン サービス (組み込み Jetty サーバーを使用) として実行するには、新しいターミナル ウィンドウを開いて、次のようにチェッカーを呼び出します。
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
次に、ブラウザで http://0.0.0.0:8888 を開きます。 (別のポートでリッスンするには、 8888
ポート番号に置き換えます。)
警告:将来のチェッカーのリリースでは、デフォルトでアドレス127.0.0.1
にバインドされます。 nu.validator.servlet.bind-address
システム プロパティを使用してチェッカーを別のアドレスにバインドしない限り、チェッカー デプロイメントに到達できなくなる可能性があります。
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
http://0.0.0.0:8888 (または使用しているnu.validator.servlet.bind-address
値に対応する URL) を開くと、validator.w3.org/nu のようなフォームが表示されます。これにより、HTML ドキュメント、CSS スタイルシート、または SVG 画像の URL を入力し、そのリソースのチェック結果をブラウザーに表示できます。
注:チェッカーの使用時にStackOverflowError
エラーが発生した場合は、Java に-Xss
オプションを指定してスレッド スタック サイズを調整してみてください。
java -Xss512k -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.servlet.Main 8888
Apache Tomcat などの既存のサーブレット コンテナ内でチェッカーを実行するには、ドキュメントに従ってvnu.war
ファイルをそのサーバーにデプロイする必要があります。たとえば、Apache Tomcat では、Manager アプリケーションを使用するか、ファイルをwebapps
ディレクトリにコピーするだけでこれを実行できます (これがデフォルトのappBase
設定であるため)。通常、 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
サーブレット コンテナがポート80
でlocalhost
に送信された HTTP リクエストを受信するように設定されており、このアプリケーションのコンテキスト ルートがvnu
であると仮定すると (多くの場合、デフォルトの動作では、明示的に指定されていない限り、WAR ファイルのファイル名がコンテキスト ルートとして使用されます)、次のようになります。 http://localhost/vnu/ に接続することでアプリケーションにアクセスできます。
注: WAR ファイル内の/WEB-INF/web.xml
ファイル (任意の ZIP 処理プログラムを使用できます) をカスタマイズして、サーブレット フィルタの構成を変更することができます。たとえば、inbound-size-limit フィルターを無効にする場合は、次のようにそのフィルターをコメント アウトします。
<!--
<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>
-->
チェッカーには HTTP クライアントがパッケージ化されており、コマンド ラインから使用して、ローカルで実行されているチェッカー HTTP サービスのインスタンス (コマンド ライン チェックを高速化するため) にドキュメントを送信したり、Web 上の任意の場所にあるリモート インスタンスにドキュメントを送信したりできます。
パッケージ化された HTTP クライアントを使用してドキュメントをローカルでチェックするには、次の手順を実行します。
「スタンドアロン Web サーバー」セクションで説明されているように、チェッカーをローカル HTTP サービスとして起動します。
新しいターミナル ウィンドウを開き、次のように HTTP クライアントを呼び出します。
java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
Web 上のチェッカーのインスタンス (html5.validator.nu/ など) にドキュメントを送信するには、次のように nu.validator.client.host オプションと nu.validator.client.port オプションを使用します。
java -cp ~/vnu.jar -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
…または次のようにします。
vnu-runtime-image/bin/java -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
他のオプションについては以下に説明します。
パッケージ化された HTTP クライアントを使用して、チェックのためにドキュメントをチェッカー HTTP サービスのインスタンスに送信する場合、Java システム プロパティを設定してチェッカーの動作の構成オプションを制御できます。
たとえば、次のようにnu.validator.client.level
システム プロパティの値をerror
に設定することで、警告レベルのメッセージを抑制し、エラー レベルのメッセージのみを表示できます。
java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
…または次のようにします。
vnu-runtime-image/bin/java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
以下にリストされているプロパティのほとんどは、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
GitHub コンテナー レジストリの https://ghcr.io/validator/validator からチェッカー Docker イメージをプルできます。
最新バージョンのチェッカーをプルして実行するには:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:latest
コンテナー レジストリからチェッカーの特定のタグ/バージョン (たとえば、 17.11.1
バージョン) を取得して実行するには、次のようにします。
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:17.11.1
チェッカーを (すべてのインターフェイスでリッスンするのではなく) 特定のアドレスにバインドするには:
docker run -it --rm -p 128.30.52.73:8888:8888
ghcr.io/validator/validator:latest
デフォルトの 5 秒とは異なる接続タイムアウトおよびソケット タイムアウトでチェッカーを実行するには、 CONNECTION_TIMEOUT_SECONDS
およびSOCKET_TIMEOUT_SECONDS
環境変数を使用します。
docker run -it --rm
-e CONNECTION_TIMEOUT_SECONDS=15
-e SOCKET_TIMEOUT_SECONDS=15
-p 8888:8888
validator/validator
特定の Java システム プロパティを設定してチェッカーを実行するには、 JAVA_TOOL_OPTIONS
環境変数を使用します。
docker run -it --rm
-e JAVA_TOOL_OPTIONS=-Dnu.validator.client.asciiquotes=yes
-p 8888:8888
validator/validator
docker compose
で使用するvnu
という名前のサービスを定義するには、(たとえば) docker-compose.yml
という名前の Compose ファイルを作成し、次のような内容を含めます。
version: '2' services:
vnu:
image: validator/validator ports:
- "8888:8888"
network_mode: "host" #so "localhost" refers to the host machine.
以下の手順に従ってチェッカーを構築、テスト、実行し、Web ブラウザでhttp://0.0.0.0:8888/
開いてチェッカー Web UI を使用できるようにします。
git、Python、JDK 8 以降がインストールされていることを確認してください。
JAVA_HOME
環境変数を設定します。
import JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu など
import JAVA_HOME=$(/usr/libexec/java_home) <-- MacOS
作業ディレクトリを作成します。
git clone https://github.com/validator/validator.git
作業ディレクトリに移動します。
CD バリデーター
チェッカー Python スクリプトを開始します。
Python ./checker.py すべて
初めてチェッカー Python スクリプトを実行するときは、オンラインにする必要があり、ビルドには数メガバイトの依存関係をダウンロードするのに時間がかかります。
上記の手順によりチェッカーが構築、テスト、実行され、Web ブラウザでhttp://0.0.0.0:8888/
開いてチェッカー Web UI を使用できるようになります。
警告:将来のチェッカーのリリースでは、デフォルトでアドレス127.0.0.1
にバインドされます。 --bind-address
オプションを使用してチェッカーを別のアドレスにバインドしない限り、チェッカーのデプロイメントに到達できなくなる可能性があります。
python ./checker.py --bind-address=128.30.52.73 all
python ./checker.py --help
を使用すると、スクリプトの動作を制御するためのコマンドライン オプションと、個別に呼び出すことができるビルド ターゲット名が表示されます。例えば:
python ./checker.py build # ビルドのみ
python ./checker.py build test # ビルドしてテストする
python ./checker.py run # 実行のみ
python ./checker.py jar # vnu.jar をコンパイルする
python ./checker.py update-shallow &&
Python ./checker.py dldeps &&
python ./checker.py jar # vnu.jar をより速くコンパイルする