Nu Html Checker (v.Nu) membantu Anda menemukan kesalahan yang tidak diinginkan dalam HTML, CSS, dan SVG Anda. Ini memungkinkan Anda untuk memeriksa dokumen secara batch dari baris perintah dan dari skrip/aplikasi lain, dan untuk menerapkan instance pemeriksa Anda sendiri sebagai layanan (seperti validator.w3.org/nu). Kode sumbernya tersedia, begitu pula petunjuk tentang cara membuat, menguji, dan menjalankan kode.
Dockerfile (lihat Menarik gambar Docker di bawah) dan paket npm, pip, dan brew juga tersedia.
Itu dirilis upstream dalam format berikut:
Biner Linux, Windows, dan macOS yang telah dikompilasi sebelumnya yang menyertakan runtime Java tertanam
vnu.jar
— versi portabel yang dapat Anda gunakan pada sistem apa pun yang menginstal Java 11 atau lebih tinggi
vnu.war
— untuk menerapkan layanan pemeriksa melalui wadah servlet seperti Tomcat
Catatan: File vnu.jar dan vnu.war mengharuskan Anda menginstal Java 11 atau lebih tinggi. Biner Linux, Windows, dan macOS yang telah dikompilasi sebelumnya tidak mengharuskan Anda menginstal versi Java apa pun sama sekali.
Anda bisa mendapatkan rilis terbaru atau menjalankan 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
, atau pip install html5validator
dan lihat bagian Penggunaan dan pemeriksaan berbasis Web di bawah. Atau otomatiskan pemeriksaan dokumen Anda dengan frontend seperti:
Plugin Grunt untuk validasi HTML atau plugin Gulp untuk validasi HTML atau plugin Maven untuk validasi HTML
paket pip
html5validator (untuk integrasi di Travis CI, CircleCI, CodeShip, Jekyll, Pelican, dll.)
LMVTFY: Biarkan Saya Memvalidasi Itu Untuk Anda (periksa otomatis JSFiddle/JSBin, dll., tautan di komentar masalah GitHub)
Jalankan pemeriksa dengan salah satu pemanggilan berikut:
• vnu-runtime-image/bin/vnu OPTIONS FILES
(Linux atau macOS)
• vnu-runtime-imagebinvnu.bat OPTIONS FILES
(Windows)
• java -jar ~/vnu.jar OPTIONS FILES
(sistem apa pun yang menginstal Java8+)
…di mana FILES
adalah dokumen yang harus diperiksa, dan OPTIONS
adalah nol atau lebih dari opsi berikut:
--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
Bagian Opsi di bawah ini memberikan rincian tentang setiap opsi, dan bagian selanjutnya memberikan beberapa contoh spesifik.
Catatan: Sepanjang contoh ini, ganti ~/vnu.jar
dengan jalur sebenarnya ke file jar tersebut di sistem Anda, dan ganti vnu-runtime-image/bin/vnu
dan vnu-runtime-imagebinvnu.bat
dengan yang sebenarnya jalur ke program vnu
atau vnu.bat
di sistem Anda — atau jika Anda menambahkan direktori vnu-runtime-image/bin
atau vnu-runtime-imagebin
variabel lingkungan PATH
sistem Anda, Anda dapat menjalankan pemeriksa hanya dengan vnu
.
Untuk memeriksa satu atau lebih dokumen dari baris perintah:
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...
Catatan: Jika Anda mendapatkan kesalahan StackOverflowError
saat menjalankan pemeriksa, coba sesuaikan ukuran tumpukan thread dengan memberikan opsi -Xss
ke java:
java -Xss512k -jar ~/vnu.jar ...
vnu-runtime-image/bin/java -Xss512k
-m vnu/nu.validator.client.SimpleCommandLineValidator ...
Untuk memeriksa semua dokumen di direktori tertentu DIRECTORY_PATH
sebagai HTML:
java -jar ~/vnu.jar DIRECTORY_PATH
vnu-runtime-image/bin/vnu DIRECTORY_PATH
vnu-runtime-imagebinvnu.bat DIRECTORY_PATH
Catatan: Contoh di bagian ini mengasumsikan Anda memiliki direktori vnu-runtime-image/bin
atau vnu-runtime-imagebin
di variabel lingkungan PATH
sistem Anda. Jika Anda menggunakan file jar, ganti vnu
dalam contoh dengan java -jar ~/vnu.jar
.
Untuk memeriksa semua dokumen dalam direktori tertentu DIRECTORY_PATH
sebagai HTML, tetapi lewati semua dokumen yang namanya tidak diakhiri dengan ekstensi .html
, .htm
, .xhtml
, atau .xht
:
vnu --skip-non-html DIRECTORY_PATH
Untuk memeriksa semua dokumen di direktori tertentu sebagai CSS:
vnu --css DIRECTORY_PATH
Untuk memeriksa semua dokumen dalam direktori tertentu sebagai CSS, tetapi lewati semua dokumen yang namanya tidak diakhiri dengan ekstensi .css
:
vnu --skip-non-css DIRECTORY_PATH
Untuk memeriksa semua dokumen dalam direktori tertentu, dengan dokumen yang namanya diakhiri dengan ekstensi .css
diperiksa sebagai CSS, dan semua dokumen lainnya diperiksa sebagai HTML:
vnu --also-check-css DIRECTORY_PATH
Untuk memeriksa semua dokumen di direktori tertentu sebagai SVG:
vnu --svg DIRECTORY_PATH
Untuk memeriksa semua dokumen dalam direktori tertentu sebagai SVG, tetapi lewati semua dokumen yang namanya tidak diakhiri dengan ekstensi .svg
:
vnu --skip-non-svg DIRECTORY_PATH
Untuk memeriksa semua dokumen dalam direktori tertentu, dengan dokumen yang namanya diakhiri dengan ekstensi .svg
diperiksa sebagai SVG, dan semua dokumen lainnya diperiksa sebagai HTML:
vnu --also-check-svg DIRECTORY_PATH
Untuk memeriksa dokumen Web:
vnu _URL_
example: vnu http://example.com/foo
Untuk memeriksa input standar:
vnu -
example:
echo '<!doctype html><title>...' | vnu -
echo '<!doctype html><title>...' | java -jar ~/vnu.jar -
Saat digunakan dari baris perintah seperti yang dijelaskan di bagian ini, pemeriksa menyediakan opsi berikut:
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 — selain dapat digunakan sebagai klien baris perintah mandiri — dapat dijalankan sebagai layanan HTTP, mirip dengan validator.w3.org/nu, untuk pemeriksaan dokumen HTML, lembar gaya CSS, dan gambar SVG berbasis browser melalui Web. Untuk itu, pemeriksa dirilis sebagai beberapa paket terpisah:
Biner Linux, Windows, dan macOS untuk menerapkan pemeriksa sebagai layanan mandiri yang sederhana di sistem apa pun
vnu.jar
untuk menerapkan pemeriksa sebagai layanan mandiri sederhana pada sistem dengan Java terinstal
vnu.war
untuk menyebarkan pemeriksa ke wadah servlet seperti Tomcat
Semua penerapan mengekspos REST API yang memungkinkan pemeriksaan dokumen HTML, lembar gaya CSS, dan gambar SVG dari klien lain, bukan hanya browser web. Dan biner Linux, Windows, dan macOS serta paket vnu.jar
juga menyertakan klien HTTP sederhana yang memungkinkan Anda mengirim dokumen ke layanan HTTP pemeriksa yang berjalan secara lokal — untuk pemeriksaan baris perintah yang cepat — atau ke layanan jarak jauh mana pun. contoh layanan HTTP pemeriksa yang berjalan di mana saja di Web.
Rilis terbaru biner Linux, Windows, dan macOS serta paket vnu.jar dan vnu.war tersedia dari proyek validator
di github. Berikut ini adalah petunjuk rinci tentang cara menggunakannya.
Catatan: Sepanjang instruksi ini, ganti ~/vnu.jar
dengan jalur sebenarnya ke file jar tersebut di sistem Anda, dan ganti vnu-runtime-image/bin/java
dan vnu-runtime-imagebinjava.exe
dengan yang sebenarnya jalur ke program pemeriksa java
atau java.exe
di sistem Anda — atau jika Anda menambahkan direktori vnu-runtime-image/bin
atau vnu-runtime-imagebin
variabel lingkungan PATH
sistem Anda, Anda dapat menjalankan pemeriksa hanya dengan java nu.validator.servlet.Main 8888
.
Untuk menjalankan pemeriksa sebagai layanan mandiri (menggunakan server Jetty bawaan), buka jendela terminal baru dan aktifkan pemeriksa seperti ini:
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
Kemudian buka http://0.0.0.0:8888 di browser. (Untuk mendengarkan di port lain, ganti 8888
dengan nomor port.)
Peringatan: Rilis pemeriksa di masa mendatang akan terikat secara default ke alamat 127.0.0.1
. Penerapan pemeriksa Anda mungkin tidak dapat dijangkau kecuali Anda menggunakan properti sistem nu.validator.servlet.bind-address
untuk mengikat pemeriksa ke alamat lain:
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
Saat Anda membuka http://0.0.0.0:8888 (atau URL apa pun yang sesuai dengan nilai nu.validator.servlet.bind-address
yang Anda gunakan), Anda akan melihat formulir yang mirip dengan validator.w3.org/nu yang memungkinkan Anda memasukkan URL dokumen HTML, stylesheet CSS, atau gambar SVG, dan mendapatkan hasil pemeriksaan sumber daya tersebut yang ditampilkan di browser.
Catatan: Jika Anda mendapatkan kesalahan StackOverflowError
saat menggunakan pemeriksa, coba sesuaikan ukuran tumpukan thread dengan memberikan opsi -Xss
ke java:
java -Xss512k -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.servlet.Main 8888
Untuk menjalankan pemeriksa di dalam wadah servlet yang ada seperti Apache Tomcat, Anda perlu menyebarkan file vnu.war
ke server tersebut dengan mengikuti dokumentasinya. Misalnya, di Apache Tomcat Anda dapat melakukan ini menggunakan aplikasi Manajer atau cukup dengan menyalin file ke direktori webapps
(karena itu adalah pengaturan default appBase
). Biasanya Anda akan melihat pesan serupa dengan berikut ini di file log 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
Dengan asumsi wadah servlet Anda dikonfigurasi untuk menerima permintaan HTTP yang dikirim ke localhost
pada port 80
dan akar konteks aplikasi ini adalah vnu
(seringkali perilaku defaultnya adalah menggunakan nama file WAR sebagai akar konteks kecuali ada yang ditentukan secara eksplisit) Anda seharusnya dapat mengakses aplikasi dengan menghubungkan ke http://localhost/vnu/.
Catatan: Anda mungkin ingin menyesuaikan file /WEB-INF/web.xml
di dalam file WAR (Anda dapat menggunakan program penanganan ZIP apa pun) untuk mengubah konfigurasi filter servlet. Misalnya, jika Anda ingin menonaktifkan filter batas ukuran masuk, Anda dapat mengomentari filter tersebut seperti ini:
<!--
<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>
-->
Pemeriksa dikemas dengan klien HTTP yang dapat Anda gunakan dari baris perintah untuk mengirim dokumen ke layanan HTTP pemeriksa yang berjalan secara lokal — untuk pemeriksaan baris perintah yang cepat — atau ke instans jarak jauh di mana pun di Web.
Untuk memeriksa dokumen secara lokal menggunakan klien HTTP yang dikemas, lakukan ini:
Jalankan pemeriksa sebagai layanan HTTP lokal, seperti yang dijelaskan di bagian Server web mandiri .
Buka jendela terminal baru dan aktifkan klien HTTP seperti ini:
java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
Untuk mengirim dokumen ke instance pemeriksa di Web, seperti html5.validator.nu/, gunakan opsi nu.validator.client.host dan nu.validator.client.port, seperti ini:
java -cp ~/vnu.jar -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
…atau seperti ini:
vnu-runtime-image/bin/java -Dnu.validator.client.port=80
-Dnu.validator.client.host=html5.validator.nu
nu.validator.client.HttpClient FILE.html...
Opsi lainnya didokumentasikan di bawah ini.
Saat menggunakan klien HTTP paket untuk mengirim dokumen ke instance layanan HTTP pemeriksa untuk pemeriksaan, Anda dapat mengatur properti sistem Java untuk mengontrol opsi konfigurasi untuk perilaku pemeriksa.
Misalnya, Anda dapat menyembunyikan pesan tingkat peringatan dan hanya menampilkan pesan tingkat kesalahan dengan mengatur nilai properti sistem nu.validator.client.level
ke error
, seperti ini:
java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
…atau seperti ini:
vnu-runtime-image/bin/java -Dnu.validator.client.level=error
-cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
Sebagian besar properti yang tercantum di bawah dipetakan ke parameter masukan umum untuk layanan pemeriksa, seperti yang didokumentasikan di 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
Anda dapat menarik gambar pemeriksa Docker dari https://ghcr.io/validator/validator di registri kontainer GitHub.
Untuk menarik dan menjalankan pemeriksa versi terbaru:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:latest
Untuk menarik dan menjalankan tag/versi pemeriksa tertentu dari registri kontainer — misalnya, versi 17.11.1
:
docker run -it --rm -p 8888:8888 ghcr.io/validator/validator:17.11.1
Untuk mengikat pemeriksa ke alamat tertentu (daripada mendengarkannya di semua antarmuka):
docker run -it --rm -p 128.30.52.73:8888:8888
ghcr.io/validator/validator:latest
Untuk membuat pemeriksa berjalan dengan batas waktu koneksi dan batas waktu soket berbeda dari 5 detik default, gunakan variabel lingkungan CONNECTION_TIMEOUT_SECONDS
dan SOCKET_TIMEOUT_SECONDS
:
docker run -it --rm
-e CONNECTION_TIMEOUT_SECONDS=15
-e SOCKET_TIMEOUT_SECONDS=15
-p 8888:8888
validator/validator
Untuk membuat pemeriksa berjalan dengan kumpulan properti sistem Java tertentu, gunakan variabel lingkungan JAVA_TOOL_OPTIONS
:
docker run -it --rm
-e JAVA_TOOL_OPTIONS=-Dnu.validator.client.asciiquotes=yes
-p 8888:8888
validator/validator
Untuk mendefinisikan layanan bernama vnu
untuk digunakan dengan docker compose
, buat file Compose bernama docker-compose.yml
(misalnya), dengan konten seperti berikut:
version: '2' services:
vnu:
image: validator/validator ports:
- "8888:8888"
network_mode: "host" #so "localhost" refers to the host machine.
Ikuti langkah-langkah di bawah ini untuk membuat, menguji, dan menjalankan pemeriksa sehingga Anda dapat membuka http://0.0.0.0:8888/
di browser Web untuk menggunakan UI Web pemeriksa.
Pastikan Anda telah menginstal git, python, dan JDK 8 atau lebih tinggi.
Setel variabel lingkungan JAVA_HOME
:
ekspor JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu, dll.
ekspor JAVA_HOME=$(/usr/libexec/java_home) <-- MacOS
Buat direktori kerja:
git klon https://github.com/validator/validator.git
Ubah ke direktori kerja Anda:
validator cd
Mulai skrip pemeriksa Python:
python ./checker.py semuanya
Pertama kali Anda menjalankan skrip pemeriksa Python, Anda harus online dan pembangunannya memerlukan waktu untuk mengunduh beberapa megabita dependensi.
Langkah-langkah di atas akan membangun, menguji, dan menjalankan pemeriksa sehingga Anda dapat membuka http://0.0.0.0:8888/
di browser Web untuk menggunakan UI Web pemeriksa.
Peringatan: Rilis pemeriksa di masa mendatang akan terikat secara default ke alamat 127.0.0.1
. Penerapan pemeriksa Anda mungkin tidak dapat dijangkau kecuali Anda menggunakan opsi --bind-address
untuk mengikat pemeriksa ke alamat lain:
python ./checker.py --bind-address=128.30.52.73 all
Gunakan python ./checker.py --help
untuk melihat opsi baris perintah untuk mengontrol perilaku skrip, serta nama target build yang dapat Anda panggil secara terpisah; misalnya:
python ./checker.py build # untuk membangun saja
python ./checker.py build test # untuk membangun dan menguji
python ./checker.py run # untuk menjalankan saja
python ./checker.py jar # untuk mengkompilasi vnu.jar
python ./checker.py update-dangkal &&
python ./checker.py dldeps &&
python ./checker.py jar # untuk mengkompilasi vnu.jar lebih cepat