2009-07-16 2 views
17

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

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

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

+0

Смотрите мой обновленный ответ с инструкциями по сборке. –

+0

... или см. Мой обновленный ответ, который автоматизирует все это! http://stackoverflow.com/a/3303298/357774 – Noyo

+0

Почему люди такие узкие? Нет оснований закрывать этот вопрос ... но тогда кого это волнует! – txwikinger

ответ

8

Вы можете вызвать W3C validator из командной строки:

Command-Line использовать

Любой компьютер с Java установлен баллончик также запустить валидатор от терминала/консоли в качестве командной строки инструмент. Скачать CSS-validator.jar банку архив (или построить его с муравьем баночке) и запустить его:

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

Примечание: файл css-validator.jar должен находиться на том же уровне, что и в lib/folder для правильной работы.

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. S это зависит от. Тогда, я был в состоянии запустить валидатор успешно:

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

+0

Хорошо .. Я пробовал это, но я получаю сообщение об ошибке. Я не уверен, что понимаю смысл этой заметки. Он не работает, если он помещен в папку/lib. Какая папка lib предназначена здесь? – txwikinger

+0

Думаю, я понял. Я загрузил исходный код из CVS из http://dev.w3.org/cvsweb/2002/css-validator/ ... Я еще не построил его, но похоже, что запуск валидатора из командной строки по-прежнему быть в контексте Jigsaw. Я думаю, что это каталог '/ lib', на который ссылаются документы. –

+0

Спасибо. Это решило мою проблему! – txwikinger

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/" 

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

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

+0

404 на ссылке для скачивания, вот текущий: http://newverhost.com/pub/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz –

+0

Спасибо! Я обновил сценарий, чтобы захватить $ TOMCAT6_VERSION (легко обновляемый тем, кто хочет использовать скрипт) непосредственно из apache. – Noyo

+0

Обновлено снова, июль 2013. – Noyo

11

That jar выполнен, но ему нужны дополнительные библиотеки.

Осмотрите 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 repository с помощью этого скрипта:

#!/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> 
+0

Путь загрузки для 'lib/xml-apis.jar', кажется, отсутствует? –

+0

@SlavenRezic Этот jar имеет интерфейсы в пакете 'javax.xml', но они [включены в Java сейчас] (http://en.wikipedia.org/wiki/Java_API_for_XML_Processing). Вам нужно только добавить его для очень старых версий Java, которые его не включают. Если вы загрузите JAR, он даже не будет использоваться, если вы не используете [одобренный механизм переопределения стандартов] (http://download.java.net/jdk8/docs/technotes/guides/standards/index.html). – andrewdotn

+1

Этот скрипт меня закрыл, но css-validator также требует директорию org из дерева CVS. Ответ @ Noyo содержит отсутствующий бит: env CVSROOT =: pserver: anonymous: [email protected]:/sources/public cvs checkout 2002/css-validator; mv 2002/css-validator/org /. –