Вопрос по linux, css, validation – Как я могу проверить CSS на внутренних веб-страницах?

17

Я хочу проверить внутренние веб-страницы, поэтому я не могу использоватьПроверка W3C обслуживание напрямую. Мне удалось запустить валидатор XHTML локально, однако у меня есть некоторые проблемы с валидатором css. Я не очень хочу настроитьКот или жеГоловоломка для того, чтобы иметь возможность запустить сервлет Java, а параметр командной строки выдает мне сообщение об ошибке

Exception in thread "main" java.lang.NoClassDefFoundError: 
org.w3c.tools.resources.ProtocolException at 
org.w3c.css.css.CssValidator.main(CssValidator.java:164)

Как я могу проверить локальный CSS на коробке Linux?

... или посмотрите мой обновленный ответ, который автоматизирует все это!stackoverflow.com/a/3303298/357774 Noyo
Почему люди такие ограниченные? Нет смысла закрывать этот вопрос ... но тогда кого это волнует! txwikinger
Смотрите мой обновленный ответ с инструкциями по сборке. Sinan Ünür

Ваш Ответ

3   ответа
8

W3C валидатор из командной строки:

Command-Line use

Any computer with Java installed can also run the validator from the terminal/console as a commandline tool. Download the css-validator.jar jar archive (or build it with ant jar) and run it as :

java -jar css-validator.jar http://www.w3.org/

Note : the css-validator.jar file must be located at the exact same level as the lib/ folder to work properly.

Update: Чтобы заставить его работать, я проверил полный дистрибутив из CVS и запустилant используя включенныйbuild.xml, Он загрузил все зависимости, кромеservlet.jar, Чтобы справиться с этим, я скачал бинарный дистрибутивTomcat 6 и извлек это. Затем я отредактировалbuild.xml заcss-validator отражать местоположениеservlet.lib:

<property name="servlet.lib" 
 value="E:/Downloads/apache-tomcat-6.0.20/lib/servlet-api.jar"/>

Потом побежалant снова. Это произвелоcss-validator.jar файл в верхнем уровне каталога извлечен из CVS сlib подкаталог, содержащий другойjarэто зависит от. Затем я смог успешно запустить валидатор:

C:\Temp\validator\2002\css-validator> java -jar css-validator.jar http://www.unur.com/

Благодарю. Это решило мою проблему! txwikinger
Хорошо .. Я попробовал это, но я получаю сообщение об ошибке выше. Я не уверен, что понимаю смысл записки. Это также не работает, если поместить в папку / lib. Какая папка lib здесь? txwikinger
По-видимому, Jigsaw's servlet.jar теперь включен в источник css-validator:2002/css-validator/tmp/Jigsaw/classes/servlet.jar
Я думаю, я понял. Я скачал исходный код из CVS изdev.w3.org/cvsweb/2002/css-validator ... Я еще не собрал его, но похоже, что запуск валидатора из командной строки все еще должен происходить в контексте Jigsaw. Я думаю, что это/lib каталог, на который ссылаются документы.
Я добавил упрощенное, скриптовое решение для ленивыхbelow, Просто скопируйте и вставьте и ждите!
11

Эта банка можно запустить, но для этого нужны дополнительные библиотеки.

ИзучитеMANIFEST.MF файл:

$ unzip -p css-validator.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.0
Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.)
Main-Class: org.w3c.css.css.CssValidator
Class-Path: . lib/commons-collections-3.2.1.jar lib/commons-lang-2.6.j
 ar lib/jigsaw.jar lib/tagsoup-1.2.jar lib/velocity-1.7.jar lib/xerces
 Impl.jar lib/xml-apis.jar lib/htmlparser-1.3.1.jar

Вам нужны все банки, упомянутые вClass-Path, Вы можете скачать их схранилище maven используя этот скрипт:

#!/bin/bash

set -e

mkdir -p lib
curl -LO http://www.w3.org/QA/Tools/css-validator/css-validator.jar
echo "\
http://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
http://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
http://repo1.maven.org/maven2/org/w3c/jigsaw/jigsaw/2.2.6/jigsaw-2.2.6.jar jigsaw.jar
http://repo1.maven.org/maven2/org/ccil/cowan/tagsoup/tagsoup/1.2/tagsoup-1.2.jar
http://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar
http://repo1.maven.org/maven2/xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar xercesImpl.jar
http://repo1.maven.org/maven2/nu/validator/htmlparser/htmlparser/1.2.1/htmlparser-1.2.1.jar\
" | while read url shortname; do
        if [ -z "$shortname" ]; then
            shortname="${url##*/}"
        fi
        curl -L -o "lib/${shortname}" "${url}"
    done

После этого работает:

$ java -jar css-validator.jar --output=soap12 file:badcss.html
{vextwarning=false, output=soap12, lang=en, warning=2, medium=all, profile=css3}
<?xml version='1.0' encoding="utf-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
    <env:Body>
        <m:cssvalidationresponse
            env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
            xmlns:m="http://www.w3.org/2005/07/css-validator">
            <m:uri>file:badcss.html</m:uri>
            <m:checkedby>http://jigsaw.w3.org/css-validator/</m:checkedby>
            <m:csslevel>css3</m:csslevel>
            <m:date>2013-03-12T06:40:09Z</m:date>
            <m:validity>false</m:validity>
            <m:result>
                <m:errors xml:lang="en">
                    <m:errorcount>1</m:errorcount>

                <m:errorlist>
                    <m:uri>file:badcss.html</m:uri>

                        <m:error>
                            <m:line>8</m:line>
                            <m:errortype>parse-error</m:errortype>
                            <m:context> h1 </m:context>        
                            <m:errorsubtype>
                                exp
                            </m:errorsubtype>
                            <m:skippedstring>
                                100%
                            </m:skippedstring>

                            <m:message>

                                Property fnt-size doesn&#39;t exist : 
                            </m:message>
                        </m:error>

                    </m:errorlist>

                </m:errors>
                <m:warnings xml:lang="en">
                    <m:warningcount>1</m:warningcount>

                    <m:warninglist>
                        <m:uri>file:badcss.html</m:uri>

                        <m:warning>
                            <m:line>5</m:line>
                            <m:level>0</m:level>
                            <m:message>You should add a &#39;type&#39; attribute with a value of &#39;text/css&#39; to the &#39;style&#39; element</m:message>
                        </m:warning>

                    </m:warninglist>
                    </m:warnings>
            </m:result>
        </m:cssvalidationresponse>
    </env:Body>
</env:Envelope>
Это определенно должен быть принятый ответ! Смешно, что эти библиотеки не включены в загружаемый JAR, и что в документации не сказано, что они отсутствуют! Спасибо, @andrewdotn!
Путь загрузки дляlib/xml-apis.jar кажется, отсутствует?
@SlavenRezic У этой банки есть интерфейсы вjavax.xml пакет, но этоincluded with Java now, Вам нужно только добавить его для очень старых версий Java, которые его не включают. Если вы загрузите JAR, он даже не будет использоваться, если вы не используетеendorsed standards override mechanism.
Этот сценарий мне очень близок, но css-validator также требует каталог org из дерева CVS - ответ @ Noyo содержит недостающий бит: env CVSROOT =: pserver: anonymous: [email protected]: / sources / публичные cvs checkout 2002 / css-validator; mv 2002 / css-validator / org /.
5

вот сценарий, который я написал, чтобы сделать то, что предлагает Синан:

#!/bin/sh
# W3C CSS Validator Install Script --------------
# installs W3C CSS Validator
# requires: ant, wget, javac
# see: http://jigsaw.w3.org/css-validator/DOWNLOAD.html
# see: http://esw.w3.org/CssValidator
# see: http://thecodetrain.co.uk/2009/02/running-the-w3c-css-validator-locally-from-the-command-line/
# see: http://stackoverflow.com/a/3303298/357774
##wget "http://www.w3.org/QA/Tools/css-validator/css-validator.jar"
#sudo aptitude install -y ant # uncomment if you don't have ant
CVSROOT=:pserver:anonymous:[email protected]:/sources/public cvs checkout 2002/css-validator 
mkdir 2002/css-validator/lib
TOMCAT6_VERSION='6.0.45'
wget "http://www.apache.org/dist/tomcat/tomcat-6/v$TOMCAT6_VERSION/bin/apache-tomcat-$TOMCAT6_VERSION.tar.gz"
tar xvf apache-tomcat-$TOMCAT6_VERSION.tar.gz
mv apache-tomcat-$TOMCAT6_VERSION/lib/servlet-api.jar 2002/css-validator/lib/servlet.jar
rm -rf apache-tomcat-$TOMCAT6_VERSION apache-tomcat-$TOMCAT6_VERSION.tar.gz
cd 2002/css-validator
ant jar
# usage example: java -jar css-validator.jar "http://csszengarden.com/"

Это должно сработать, по крайней мере, до следующего обновления зависимостей программного обеспечения, не нарушающего скрипт сборки ant (не стесняйтесь параметризировать версии).

Надеюсь это поможет!

404 по ссылке для скачивания, вот текущая:newverhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/…
Спасибо! Я обновил скрипт, чтобы получить $ TOMCAT6_VERSION (легко обновляемый тем, кто хочет использовать скрипт) напрямую из apache.
Я обновил версию Tomcat выше, однако перед запускомant jar Мне нужно было также изменить номер версии, используяsed -i 's/commons-collections-3.2.1/commons-collections-3.2.2/g' build.xml, Если кто-то может подтвердить, что это правильно, мы можем обновить скрипт выше.
Обновлено снова, июль 2013 г.

Похожие вопросы