يساعدك Nu Html Checker (v.Nu) على اكتشاف الأخطاء غير المقصودة في HTML وCSS وSVG. فهو يمكّنك من فحص المستندات دفعة واحدة من سطر الأوامر ومن البرامج النصية/التطبيقات الأخرى، ونشر مثيل المدقق الخاص بك كخدمة (مثل validator.w3.org/nu). كود المصدر الخاص به متاح، وكذلك تعليمات حول كيفية إنشاء الكود واختباره وتشغيله.
يتوفر أيضًا ملف Dockerfile (انظر سحب صورة Docker أدناه) وحزم npm وpip وbrew.
يتم إصداره في المنبع بهذه التنسيقات:
ثنائيات Linux وWindows وmacOS المجمعة مسبقًا والتي تتضمن وقت تشغيل Java مضمنًا
vnu.jar
— إصدار محمول يمكنك استخدامه على أي نظام مثبت عليه Java 11 أو أعلى
vnu.war
— لنشر خدمة المدقق من خلال حاوية servlet مثل 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
وراجع قسمي الاستخدام والفحص المستند إلى الويب أدناه. أو قم بأتمتة فحص المستندات الخاصة بك باستخدام واجهة أمامية مثل:
البرنامج المساعد Grunt للتحقق من صحة HTML أو البرنامج المساعد Gulp للتحقق من صحة HTML أو البرنامج المساعد Maven للتحقق من صحة HTML
حزمة html5validator pip
(للتكامل في Travis CI، وCircleCI، وCodeShip، وJekyll، وPelican، وما إلى ذلك)
LMVTFY: اسمح لي بالتحقق من ذلك نيابةً عنك (التحقق التلقائي من 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
هي صفر أو أكثر من الخيارات التالية:
--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
على نظامك - أو إذا قمت بإضافة دليل vnu-runtime-image/bin
أو vnu-runtime-imagebin
لمتغير بيئة PATH
للنظام الخاص بك، فيمكنك استدعاء المدقق باستخدام vnu
فقط.
للتحقق من مستند واحد أو أكثر من سطر الأوامر:
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
عند استدعاء المدقق، فحاول ضبط حجم مكدس مؤشر الترابط عن طريق توفير خيار -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
ملاحظة: تفترض الأمثلة الموجودة في هذا القسم أن لديك دليل vnu-runtime-image/bin
أو vnu-runtime-imagebin
في متغير بيئة PATH
للنظام لديك. إذا كنت تستخدم ملف 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
للتحقق من مستند ويب:
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 - إلى جانب كونه قابلاً للاستخدام كعميل سطر أوامر مستقل - كخدمة HTTP، على غرار validator.w3.org/nu، للتحقق من مستندات HTML وأوراق أنماط CSS وصور SVG المستندة إلى المستعرض. عبر الويب. ولتحقيق هذه الغاية، يتم إصدار المدقق في عدة حزم منفصلة:
ثنائيات Linux وWindows وmacOS لنشر المدقق كخدمة بسيطة قائمة بذاتها على أي نظام
vnu.jar
لنشر المدقق كخدمة بسيطة قائمة بذاتها على نظام مثبت عليه Java
vnu.war
لنشر المدقق في حاوية servlet مثل Tomcat
تعرض جميع عمليات النشر واجهة REST API التي تتيح التحقق من مستندات HTML وأوراق أنماط CSS وصور SVG من عملاء آخرين، وليس فقط متصفحات الويب. كما تتضمن ثنائيات Linux وWindows وmacOS وحزمة vnu.jar
أيضًا عميل HTTP بسيط يمكّنك إما من إرسال المستندات إلى مثيل يعمل محليًا لخدمة HTTP للمدقق - للتحقق السريع من سطر الأوامر - أو إلى أي جهاز بعيد مثيل لخدمة HTTP المدقق التي تعمل في أي مكان على الويب.
تتوفر أحدث الإصدارات من ثنائيات Linux وWindows وmacOS وحزم vnu.jar وvnu.war من مشروع validator
على github. وفيما يلي تعليمات مفصلة حول استخدامها.
ملاحظة: خلال هذه التعليمات، استبدل ~/vnu.jar
بالمسار الفعلي لملف jar هذا على نظامك، واستبدل vnu-runtime-image/bin/java
و vnu-runtime-imagebinjava.exe
بالمسار الفعلي المسار إلى برنامج checker java
أو java.exe
على نظامك - أو إذا قمت بإضافة دليل vnu-runtime-image/bin
أو vnu-runtime-imagebin
متغير بيئة PATH
للنظام الخاص بك، فيمكنك استدعاء المدقق باستخدام java nu.validator.servlet.Main 8888
فقط 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 (أو أي عنوان URL يتوافق مع قيمة nu.validator.servlet.bind-address
التي تستخدمها)، سترى نموذجًا مشابهًا لـ validator.w3.org/nu الذي يسمح لك بإدخال عنوان URL لمستند HTML أو ورقة أنماط CSS أو صورة SVG، وعرض نتائج التحقق من هذا المورد في المتصفح.
ملاحظة: إذا حصلت على خطأ StackOverflowError
عند استخدام المدقق، فحاول ضبط حجم مكدس مؤشر الترابط عن طريق توفير خيار -Xss
لجافا:
java -Xss512k -cp ~/vnu.jar nu.validator.servlet.Main 8888
vnu-runtime-image/bin/java -Xss512k -m vnu/nu.validator.servlet.Main 8888
لتشغيل المدقق داخل حاوية servlet موجودة مثل 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
بافتراض أن حاوية servlet الخاصة بك تم تكوينها لتلقي طلبات HTTP المرسلة إلى localhost
على المنفذ 80
وأن جذر السياق لهذا التطبيق هو vnu
(غالبًا ما يكون السلوك الافتراضي هو استخدام اسم ملف WAR كجذر السياق ما لم يتم تحديد واحد بشكل صريح) يجب أن تكون كذلك قادر على الوصول إلى التطبيق عن طريق الاتصال بـ http://localhost/vnu/.
ملاحظة: قد ترغب في تخصيص الملف /WEB-INF/web.xml
داخل ملف WAR (يمكنك استخدام أي برنامج للتعامل مع ZIP) لتعديل تكوين مرشح servlet. على سبيل المثال، إذا أردت تعطيل عامل تصفية الحد الأقصى لحجم الوارد، فيمكنك التعليق على هذا الفلتر على النحو التالي:
<!--
<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 للمدقق - للتحقق السريع من سطر الأوامر - أو إلى مثيل بعيد في أي مكان على الويب.
للتحقق من المستندات محليًا باستخدام عميل HTTP المعبأ، قم بما يلي:
قم بتشغيل المدقق كخدمة HTTP محلية، كما هو موضح في قسم خادم الويب المستقل .
افتح نافذة طرفية جديدة واستدعِ عميل HTTP كما يلي:
java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
لإرسال المستندات إلى مثيل المدقق على الويب، مثل 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
يمكنك سحب صورة المدقق Docker من https://ghcr.io/validator/validator في سجل حاوية GitHub.
لسحب أحدث إصدار من المدقق وتشغيله:
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
لتحديد خدمة باسم vnu
للاستخدام مع docker compose
، قم بإنشاء ملف Compose باسم docker-compose.yml
(على سبيل المثال)، بمحتويات مثل ما يلي:
version: '2' services:
vnu:
image: validator/validator ports:
- "8888:8888"
network_mode: "host" #so "localhost" refers to the host machine.
اتبع الخطوات الموضحة أدناه لإنشاء المدقق واختباره وتشغيله بحيث يمكنك فتح http://0.0.0.0:8888/
في مستعرض الويب لاستخدام واجهة مستخدم الويب للمدقق.
تأكد من تثبيت git وpython وJDK 8 أو الإصدارات الأحدث.
قم بتعيين متغير البيئة JAVA_HOME
:
تصدير JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu، إلخ.
تصدير Java_HOME=$(/usr/libexec/java_home) <-- MacOS
إنشاء دليل العمل:
استنساخ بوابة https://github.com/validator/validator.git
التغيير إلى دليل العمل الخاص بك:
مدقق القرص المضغوط
ابدأ البرنامج النصي للمدقق بايثون:
بيثون ./checker.py الكل
في المرة الأولى التي تقوم فيها بتشغيل برنامج Python النصي للمدقق، ستحتاج إلى أن تكون متصلاً بالإنترنت وسيحتاج الإصدار إلى وقت لتنزيل عدة ميغابايت من التبعيات.
ستقوم الخطوات المذكورة أعلاه بإنشاء المدقق واختباره وتشغيله بحيث يمكنك فتح http://0.0.0.0:8888/
في مستعرض ويب لاستخدام واجهة مستخدم الويب للمدقق.
تحذير: سيتم ربط إصدارات المدقق المستقبلية افتراضيًا بالعنوان 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 التحديث الضحل &&
بايثون ./checker.py dldeps &&
python ./checker.py jar # لتجميع vnu.jar بشكل أسرع